@fluixi/reactive 1.0.0-alpha.83 → 1.0.0-alpha.85

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 (167) hide show
  1. package/dist/cdn/reactive.cjs +2722 -1
  2. package/dist/cdn/reactive.global.js +2 -1
  3. package/dist/cdn/reactive.mjs +2706 -1
  4. package/dist/cdn/signal.cjs +299 -1
  5. package/dist/cdn/signal.d.ts +1 -1
  6. package/dist/cdn/signal.global.js +2 -1
  7. package/dist/cdn/signal.js +1 -1
  8. package/dist/cdn/signal.mjs +276 -1
  9. package/dist/index.cjs +2722 -1
  10. package/dist/index.mjs +2706 -1
  11. package/dist/lib/index.cjs +2723 -1
  12. package/dist/lib/index.js +1 -1
  13. package/dist/lib/index.mjs +2708 -1
  14. package/dist/lib/observable/index.cjs +386 -1
  15. package/dist/lib/observable/index.mjs +364 -1
  16. package/dist/lib/observable/observable.cjs +384 -1
  17. package/dist/lib/observable/observable.d.ts +0 -137
  18. package/dist/lib/observable/observable.d.ts.map +1 -1
  19. package/dist/lib/observable/observable.js +0 -71
  20. package/dist/lib/observable/observable.mjs +361 -1
  21. package/dist/lib/observable/subscription.cjs +180 -1
  22. package/dist/lib/observable/subscription.d.ts +0 -12
  23. package/dist/lib/observable/subscription.d.ts.map +1 -1
  24. package/dist/lib/observable/subscription.js +0 -12
  25. package/dist/lib/observable/subscription.mjs +157 -1
  26. package/dist/lib/observable/types.cjs +18 -1
  27. package/dist/lib/observable/types.d.ts.map +1 -1
  28. package/dist/lib/predicates.cjs +44 -1
  29. package/dist/lib/predicates.d.ts +2 -2
  30. package/dist/lib/predicates.js +2 -2
  31. package/dist/lib/predicates.mjs +23 -1
  32. package/dist/lib/signal/api.cjs +571 -1
  33. package/dist/lib/signal/api.d.ts +211 -1
  34. package/dist/lib/signal/api.d.ts.map +1 -1
  35. package/dist/lib/signal/api.js +207 -12
  36. package/dist/lib/signal/api.mjs +548 -1
  37. package/dist/lib/signal/cached-resource.cjs +672 -1
  38. package/dist/lib/signal/cached-resource.d.ts +28 -16
  39. package/dist/lib/signal/cached-resource.d.ts.map +1 -1
  40. package/dist/lib/signal/cached-resource.js +35 -29
  41. package/dist/lib/signal/cached-resource.mjs +650 -1
  42. package/dist/lib/signal/graph/children.cjs +325 -1
  43. package/dist/lib/signal/graph/children.js +1 -1
  44. package/dist/lib/signal/graph/children.mjs +302 -1
  45. package/dist/lib/signal/graph/compat.cjs +578 -1
  46. package/dist/lib/signal/graph/compat.d.ts +13 -13
  47. package/dist/lib/signal/graph/compat.d.ts.map +1 -1
  48. package/dist/lib/signal/graph/compat.js +33 -31
  49. package/dist/lib/signal/graph/compat.mjs +556 -1
  50. package/dist/lib/signal/graph/core.cjs +295 -1
  51. package/dist/lib/signal/graph/core.d.ts +28 -24
  52. package/dist/lib/signal/graph/core.d.ts.map +1 -1
  53. package/dist/lib/signal/graph/core.js +38 -31
  54. package/dist/lib/signal/graph/core.mjs +273 -1
  55. package/dist/lib/signal/graph/debounced.cjs +668 -1
  56. package/dist/lib/signal/graph/debounced.d.ts +5 -5
  57. package/dist/lib/signal/graph/debounced.d.ts.map +1 -1
  58. package/dist/lib/signal/graph/debounced.js +5 -5
  59. package/dist/lib/signal/graph/debounced.mjs +645 -1
  60. package/dist/lib/signal/graph/derived.cjs +496 -1
  61. package/dist/lib/signal/graph/derived.d.ts +1 -1
  62. package/dist/lib/signal/graph/derived.js +1 -1
  63. package/dist/lib/signal/graph/derived.mjs +473 -1
  64. package/dist/lib/signal/graph/detect.cjs +66 -1
  65. package/dist/lib/signal/graph/detect.mjs +45 -1
  66. package/dist/lib/signal/graph/error-boundary.cjs +301 -1
  67. package/dist/lib/signal/graph/error-boundary.js +3 -3
  68. package/dist/lib/signal/graph/error-boundary.mjs +278 -1
  69. package/dist/lib/signal/graph/index.cjs +305 -1
  70. package/dist/lib/signal/graph/index.d.ts +7 -6
  71. package/dist/lib/signal/graph/index.d.ts.map +1 -1
  72. package/dist/lib/signal/graph/index.js +7 -6
  73. package/dist/lib/signal/graph/index.mjs +283 -1
  74. package/dist/lib/signal/graph/observe.cjs +163 -1
  75. package/dist/lib/signal/graph/observe.d.ts +8 -8
  76. package/dist/lib/signal/graph/observe.js +5 -5
  77. package/dist/lib/signal/graph/observe.mjs +140 -1
  78. package/dist/lib/signal/graph/resource.cjs +620 -1
  79. package/dist/lib/signal/graph/resource.d.ts +1 -1
  80. package/dist/lib/signal/graph/resource.js +7 -8
  81. package/dist/lib/signal/graph/resource.mjs +597 -1
  82. package/dist/lib/signal/graph/runtime.cjs +501 -1
  83. package/dist/lib/signal/graph/runtime.d.ts +7 -7
  84. package/dist/lib/signal/graph/runtime.d.ts.map +1 -1
  85. package/dist/lib/signal/graph/runtime.js +34 -30
  86. package/dist/lib/signal/graph/runtime.mjs +478 -1
  87. package/dist/lib/signal/graph/signal-next.cjs +1208 -1
  88. package/dist/lib/signal/graph/signal-next.d.ts +5 -5
  89. package/dist/lib/signal/graph/signal-next.d.ts.map +1 -1
  90. package/dist/lib/signal/graph/signal-next.js +14 -12
  91. package/dist/lib/signal/graph/signal-next.mjs +1186 -1
  92. package/dist/lib/signal/graph/ssr-hooks.cjs +60 -1
  93. package/dist/lib/signal/graph/ssr-hooks.d.ts +6 -7
  94. package/dist/lib/signal/graph/ssr-hooks.d.ts.map +1 -1
  95. package/dist/lib/signal/graph/ssr-hooks.js +6 -7
  96. package/dist/lib/signal/graph/ssr-hooks.mjs +39 -1
  97. package/dist/lib/signal/graph/state.cjs +72 -1
  98. package/dist/lib/signal/graph/state.d.ts +41 -10
  99. package/dist/lib/signal/graph/state.d.ts.map +1 -1
  100. package/dist/lib/signal/graph/state.js +83 -22
  101. package/dist/lib/signal/graph/state.mjs +49 -1
  102. package/dist/lib/signal/graph/suspense.cjs +301 -1
  103. package/dist/lib/signal/graph/suspense.js +4 -4
  104. package/dist/lib/signal/graph/suspense.mjs +278 -1
  105. package/dist/lib/signal/index-legacy.cjs +2540 -1
  106. package/dist/lib/signal/index-legacy.d.ts +1 -1
  107. package/dist/lib/signal/index-legacy.js +1 -1
  108. package/dist/lib/signal/index-legacy.mjs +2518 -1
  109. package/dist/lib/signal/index.cjs +1275 -1
  110. package/dist/lib/signal/index.d.ts +3 -2
  111. package/dist/lib/signal/index.d.ts.map +1 -1
  112. package/dist/lib/signal/index.js +7 -4
  113. package/dist/lib/signal/index.mjs +1253 -1
  114. package/dist/lib/signal/list.cjs +549 -1
  115. package/dist/lib/signal/list.d.ts +5 -5
  116. package/dist/lib/signal/list.js +5 -5
  117. package/dist/lib/signal/list.mjs +526 -1
  118. package/dist/lib/signal/resource-api.cjs +626 -1
  119. package/dist/lib/signal/resource-api.d.ts +5 -5
  120. package/dist/lib/signal/resource-api.js +5 -5
  121. package/dist/lib/signal/resource-api.mjs +603 -1
  122. package/dist/lib/signal/signal.cjs +2023 -1
  123. package/dist/lib/signal/signal.d.ts +4 -4
  124. package/dist/lib/signal/signal.d.ts.map +1 -1
  125. package/dist/lib/signal/signal.js +22 -23
  126. package/dist/lib/signal/signal.mjs +2000 -1
  127. package/dist/lib/signal/types.cjs +38 -1
  128. package/dist/lib/signal/types.d.ts.map +1 -1
  129. package/dist/lib/signal/types.js +2 -2
  130. package/dist/lib/signal/types.mjs +17 -1
  131. package/dist/lib/signal/utilities.cjs +1012 -1
  132. package/dist/lib/signal/utilities.d.ts +0 -108
  133. package/dist/lib/signal/utilities.d.ts.map +1 -1
  134. package/dist/lib/signal/utilities.js +0 -158
  135. package/dist/lib/signal/utilities.mjs +990 -1
  136. package/dist/lib/store/api.cjs +661 -1
  137. package/dist/lib/store/api.d.ts +33 -0
  138. package/dist/lib/store/api.d.ts.map +1 -1
  139. package/dist/lib/store/api.js +41 -8
  140. package/dist/lib/store/api.mjs +645 -1
  141. package/dist/lib/store/index.cjs +740 -1
  142. package/dist/lib/store/index.js +1 -1
  143. package/dist/lib/store/index.mjs +725 -1
  144. package/dist/lib/store/setter.types.cjs +18 -1
  145. package/dist/lib/store/setter.types.d.ts +43 -3
  146. package/dist/lib/store/setter.types.d.ts.map +1 -1
  147. package/dist/lib/store/store.cjs +707 -1
  148. package/dist/lib/store/store.d.ts +72 -0
  149. package/dist/lib/store/store.d.ts.map +1 -1
  150. package/dist/lib/store/store.js +238 -8
  151. package/dist/lib/store/store.mjs +693 -1
  152. package/dist/lib/store/types.cjs +18 -1
  153. package/dist/lib/store/types.d.ts +1 -1
  154. package/dist/lib/store/types.d.ts.map +1 -1
  155. package/dist/lib/store/utils.cjs +43 -1
  156. package/dist/lib/store/utils.d.ts +1 -1
  157. package/dist/lib/store/utils.js +1 -1
  158. package/dist/lib/store/utils.mjs +22 -1
  159. package/dist/lib/subject.cjs +450 -1
  160. package/dist/lib/subject.js +3 -91
  161. package/dist/lib/subject.mjs +427 -1
  162. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  163. package/dist/version.generated.cjs +27 -1
  164. package/dist/version.generated.d.ts +1 -1
  165. package/dist/version.generated.js +2 -2
  166. package/dist/version.generated.mjs +7 -1
  167. package/package.json +5 -4
@@ -3,5 +3,38 @@ import type { Immutable, Store, StoreOptions } from './store.js';
3
3
  export type StoreHandle<T> = Immutable<T> & {
4
4
  set: Store<T>['set'];
5
5
  };
6
+ /**
7
+ * A reactive store you read by property access and write with `.set()`.
8
+ *
9
+ * Tracking is per key and lazy: a signal is created for a key the first time something
10
+ * reads it, so an effect reading one field is untouched by a write to another. Nested
11
+ * objects and arrays are proxied on access, to whatever depth is reached.
12
+ *
13
+ * `options.equals` compares whole states, not individual keys, and `options.name` is
14
+ * what a devtools panel labels the store with.
15
+ *
16
+ * @example An object argument patches the keys it names and leaves the rest:
17
+ * ```ts
18
+ * const user = store({ name: 'Ada', role: 'admin' });
19
+ *
20
+ * effect(() => console.log(user.name)); // subscribes to `name` only
21
+ * user.set({ role: 'owner' }); // the effect does not re-run
22
+ * user.set({ name: 'Grace' }); // now it does
23
+ * ```
24
+ *
25
+ * @example A dot path writes deep without rebuilding the tree above it. Array indices
26
+ * are segments like any other:
27
+ * ```ts
28
+ * const state = store({ todos: [{ done: false }] });
29
+ * state.set('todos.0.done', true);
30
+ * state.set('todos.0.done', (done) => !done); // or derive from the current value
31
+ * ```
32
+ *
33
+ * @example A `set` key of your own is unreachable through this form, because the setter
34
+ * occupies the name. `createStore` hands back a tuple and has no such collision:
35
+ * ```ts
36
+ * const [config, setConfig] = createStore({ set: 'a value' });
37
+ * ```
38
+ */
6
39
  export declare function store<T>(initialState: T, options?: StoreOptions<T>): StoreHandle<T>;
7
40
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/lib/store/api.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,0DAA0D;AAC1D,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;CAAE,CAAC;AAErE,wBAAgB,KAAK,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAUnF"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/lib/store/api.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,0DAA0D;AAC1D,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;CAAE,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAUnF"}
@@ -1,23 +1,56 @@
1
1
  /**
2
- * `store` `createStore` as one binding instead of a tuple.
2
+ * `store`: `createStore` as one binding instead of a tuple.
3
3
  *
4
4
  * const user = store({ name: 'Ada' });
5
5
  * user.name; // reads, and tracks that key
6
6
  * user.set({ name: 'Grace' }); // writes
7
7
  *
8
- * It returns the reactive state itself, with `set` on it. That's the difference from
9
- * `signal`, and it's deliberate: `.get()` exists on a signal because a value has no
10
- * other way to be read, while a store is an object whose whole point is that property
11
- * access IS the read. Spelling it `user.get().name` would add a call to look uniform and
12
- * lose the thing that makes a store worth using.
8
+ * It returns the reactive state itself with `set` on it, which is where it parts from
9
+ * `signal`. A signal needs `.get()` because a value has no other way to be read. A
10
+ * store is an object, and property access is already the read, so `user.get().name`
11
+ * would add a call for the sake of looking uniform and lose the thing that makes a
12
+ * store worth using.
13
13
  *
14
- * Reads still subscribe per key, so an effect over `user.name` doesn't re-run when
14
+ * Reads still subscribe per key, so an effect over `user.name` does not re-run when
15
15
  * `user.role` changes.
16
16
  *
17
17
  * The one cost: a `set` key in your own state is shadowed by the setter. Reach for
18
- * `createStore` if you need that name it is unchanged.
18
+ * `createStore` when you need that name, which is unchanged.
19
19
  */
20
20
  import { createStore } from './store.js';
21
+ /**
22
+ * A reactive store you read by property access and write with `.set()`.
23
+ *
24
+ * Tracking is per key and lazy: a signal is created for a key the first time something
25
+ * reads it, so an effect reading one field is untouched by a write to another. Nested
26
+ * objects and arrays are proxied on access, to whatever depth is reached.
27
+ *
28
+ * `options.equals` compares whole states, not individual keys, and `options.name` is
29
+ * what a devtools panel labels the store with.
30
+ *
31
+ * @example An object argument patches the keys it names and leaves the rest:
32
+ * ```ts
33
+ * const user = store({ name: 'Ada', role: 'admin' });
34
+ *
35
+ * effect(() => console.log(user.name)); // subscribes to `name` only
36
+ * user.set({ role: 'owner' }); // the effect does not re-run
37
+ * user.set({ name: 'Grace' }); // now it does
38
+ * ```
39
+ *
40
+ * @example A dot path writes deep without rebuilding the tree above it. Array indices
41
+ * are segments like any other:
42
+ * ```ts
43
+ * const state = store({ todos: [{ done: false }] });
44
+ * state.set('todos.0.done', true);
45
+ * state.set('todos.0.done', (done) => !done); // or derive from the current value
46
+ * ```
47
+ *
48
+ * @example A `set` key of your own is unreachable through this form, because the setter
49
+ * occupies the name. `createStore` hands back a tuple and has no such collision:
50
+ * ```ts
51
+ * const [config, setConfig] = createStore({ set: 'a value' });
52
+ * ```
53
+ */
21
54
  export function store(initialState, options) {
22
55
  const [state, set] = createStore(initialState, options);
23
56
  // A thin wrapper rather than assigning onto the state: the store proxy is the tracking