storion 0.10.1 → 0.11.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.
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  <h1 align="center">Storion</h1>
6
6
 
7
7
  <p align="center">
8
- <strong>Reactive state management with automatic dependency tracking</strong>
8
+ <strong>State management that gets out of your way</strong>
9
9
  </p>
10
10
 
11
11
  <p align="center">
@@ -24,134 +24,108 @@
24
24
 
25
25
  ---
26
26
 
27
- ## Why Storion?
28
-
29
- **Simple at first. Powerful as you grow.**
30
-
31
- Start with basic stores and direct mutations. As your app grows, layer in async state, effects, dependency injection, and middleware — all without rewriting existing code.
32
-
33
- ## Features
34
-
35
- | | |
36
- | -------------------- | ---------------------------------------- |
37
- | 🎯 **Auto-tracking** | Dependencies tracked when you read state |
38
- | ⚡ **Fine-grained** | Only re-render what changed |
39
- | 🔒 **Type-safe** | Full TypeScript with excellent inference |
40
- | 📦 **Tiny** | ~4KB minified + gzipped |
41
- | ⏳ **Async** | First-class loading states with Suspense |
42
- | 🛠️ **DevTools** | Built-in debugging panel |
43
-
44
- ## Installation
45
-
46
- ```bash
47
- npm install storion
48
- ```
49
-
50
- ## Quick Start
51
-
52
- **Read state → Storion tracks it. State changes → Only affected components re-render.**
27
+ ## The Simplest Counter You'll Ever Write
53
28
 
54
29
  ```tsx
55
30
  import { create } from "storion/react";
56
31
 
57
- // Create store and hook in one call - no Provider needed!
58
- const [counter, useCounter] = create({
32
+ const [_, useCounter] = create({
59
33
  state: { count: 0 },
60
- setup({ state }) {
61
- return {
62
- inc: () => state.count++,
63
- dec: () => state.count--,
64
- };
65
- },
34
+ setup: ({ state }) => ({
35
+ inc: () => state.count++,
36
+ dec: () => state.count--,
37
+ }),
66
38
  });
67
39
 
68
40
  function Counter() {
69
- const { count, inc, dec } = useCounter((state, actions) => ({
70
- count: state.count,
71
- ...actions,
72
- }));
73
-
74
- return (
75
- <div>
76
- <button onClick={dec}>-</button>
77
- <span>{count}</span>
78
- <button onClick={inc}>+</button>
79
- </div>
80
- );
41
+ const { count, inc, dec } = useCounter((s, a) => ({ count: s.count, ...a }));
42
+ return <button onClick={inc}>{count}</button>;
81
43
  }
82
44
  ```
83
45
 
84
- <details>
85
- <summary>Multi-store apps with StoreProvider</summary>
46
+ **That's it.** No Provider. No boilerplate. No ceremony.
86
47
 
87
- ```tsx
88
- import { store, useStore, StoreProvider } from "storion/react";
48
+ ---
89
49
 
90
- const counterStore = store({
91
- name: "counter",
92
- state: { count: 0 },
93
- setup({ state }) {
94
- return {
95
- inc: () => state.count++,
96
- dec: () => state.count--,
97
- };
98
- },
99
- });
50
+ ## Why Storion?
100
51
 
101
- function Counter() {
102
- const { count, inc, dec } = useStore(({ get }) => {
103
- const [state, actions] = get(counterStore);
104
- return { count: state.count, ...actions };
105
- });
106
-
107
- return (
108
- <div>
109
- <button onClick={dec}>-</button>
110
- <span>{count}</span>
111
- <button onClick={inc}>+</button>
112
- </div>
113
- );
114
- }
52
+ | Pain Point | Storion's Answer |
53
+ | ------------------------- | ----------------------------------------------- |
54
+ | 🤯 Too much boilerplate | One `create()` call. Done. |
55
+ | 🐌 Unnecessary re-renders | Auto-tracks what you read, updates only that |
56
+ | 😵 Complex async handling | Built-in loading states, cancellation, Suspense |
57
+ | 🔧 Provider hell | Optional. Use it when you need it |
58
+ | 📦 Bundle anxiety | ~4KB gzipped. Seriously. |
59
+
60
+ ---
61
+
62
+ ## Features at a Glance
115
63
 
116
- function App() {
117
- return (
118
- <StoreProvider>
119
- <Counter />
120
- </StoreProvider>
121
- );
122
- }
123
64
  ```
65
+ ✦ Auto-tracking Read state → automatically subscribed
66
+ ✦ Fine-grained Change count? Only Counter re-renders
67
+ ✦ Type-safe Full inference, zero manual types
68
+ ✦ Async-first Loading, error, stale states built-in
69
+ ✦ DevTools Time-travel debugging included
70
+ ✦ Scalable From counter to enterprise, same API
71
+ ```
72
+
73
+ ---
124
74
 
125
- </details>
75
+ ## Growing With You
126
76
 
127
- ## Async State
77
+ **Start simple:**
128
78
 
129
79
  ```tsx
130
- import { async } from "storion/async";
131
-
132
- const userStore = store({
133
- name: "user",
134
- state: { user: async.fresh<User>() },
135
- setup({ focus }) {
136
- const userQuery = async.action(focus("user"), async (ctx, id: string) => {
137
- const res = await fetch(`/api/users/${id}`, { signal: ctx.signal });
138
- return res.json();
139
- });
140
-
141
- return { fetchUser: userQuery.dispatch };
80
+ const [_, useAuth] = create({
81
+ state: { user: null },
82
+ setup: ({ state }) => ({
83
+ login: (user) => {
84
+ state.user = user;
85
+ },
86
+ logout: () => {
87
+ state.user = null;
88
+ },
89
+ }),
90
+ });
91
+ ```
92
+
93
+ **Add async when ready:**
94
+
95
+ ```tsx
96
+ const [_, useUsers] = create({
97
+ state: { users: async.stale([]) },
98
+ setup: ({ focus }) => {
99
+ const query = async(focus("users"), (ctx) =>
100
+ fetch("/api/users", { signal: ctx.signal }).then((r) => r.json())
101
+ );
102
+ return { fetch: query.dispatch, refresh: query.refresh };
142
103
  },
143
104
  });
144
105
  ```
145
106
 
146
- ## Learn More
107
+ **Scale to multi-store apps:**
147
108
 
148
- 📚 **[Full Documentation](https://linq2js.github.io/storion/)** — Guides, examples, and API reference
109
+ ```tsx
110
+ // When you need shared containers, dependency injection, middleware...
111
+ <StoreProvider>
112
+ <App />
113
+ </StoreProvider>
114
+ ```
115
+
116
+ ---
149
117
 
150
- - [Getting Started](https://linq2js.github.io/storion/guide/getting-started.html)
151
- - [Core Concepts](https://linq2js.github.io/storion/guide/core-concepts.html)
152
- - [Async State](https://linq2js.github.io/storion/guide/async.html)
153
- - [API Reference](https://linq2js.github.io/storion/api/store.html)
154
- - [Live Demos](https://linq2js.github.io/storion/demos.html)
118
+ ## Documentation
119
+
120
+ 📚 **[Full Documentation](https://linq2js.github.io/storion/)** — Everything you need
121
+
122
+ - [Getting Started](https://linq2js.github.io/storion/guide/getting-started.html) — 5 min setup
123
+ - [Core Concepts](https://linq2js.github.io/storion/guide/core-concepts.html) — How it works
124
+ - [Async State](https://linq2js.github.io/storion/guide/async.html) — Loading states made easy
125
+ - [API Reference](https://linq2js.github.io/storion/api/store.html) — Every function documented
126
+ - [Live Demos](https://linq2js.github.io/storion/demos.html) — See it in action
127
+
128
+ ---
155
129
 
156
130
  ## License
157
131
 
@@ -160,5 +134,5 @@ MIT © [linq2js](https://github.com/linq2js)
160
134
  ---
161
135
 
162
136
  <p align="center">
163
- <sub>Built with ❤️ for the React community</sub>
137
+ <sub>Built with ❤️ for developers who value simplicity</sub>
164
138
  </p>
@@ -1 +1 @@
1
- {"version":3,"file":"abortable.d.ts","sourceRoot":"","sources":["../../src/async/abortable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abortable.d.ts","sourceRoot":"","sources":["../../src/async/abortable.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { c as createSafe, i as isSpec, s as storeTuple, a as store, A as AsyncNotReadyError, b as AsyncAggregateError, e as effect, u as untrack, d as AsyncFunctionError, S as SetupPhaseError, f as isAbortable, r as retryStrategy } from "../effect-BDQU8Voz.js";
2
- import { g } from "../effect-BDQU8Voz.js";
1
+ import { c as createSafe, i as isSpec, s as storeTuple, a as store, A as AsyncNotReadyError, b as AsyncAggregateError, e as effect, u as untrack, d as AsyncFunctionError, S as SetupPhaseError, f as isAbortable, r as retryStrategy } from "../effect-1beiYe_c.js";
2
+ import { g } from "../effect-1beiYe_c.js";
3
3
  function createAsyncContext(abortController, isCancelledOrAborted, cancel, resolver) {
4
4
  const safe = createSafe(
5
5
  () => abortController.signal,
@@ -141,6 +141,20 @@ export interface SafeCallback {
141
141
  */
142
142
  <TArgs extends any[]>(callback: (...args: TArgs) => void): (...args: TArgs) => void;
143
143
  }
144
+ export interface SafeDelay {
145
+ /**
146
+ * Delay execution for specified milliseconds.
147
+ * Never resolves if cancelled.
148
+ *
149
+ * @example
150
+ * // Wait 1 second
151
+ * await safe.delay(1000);
152
+ *
153
+ * // Wait and return a value
154
+ * const result = await safe.delay(500, "done");
155
+ */
156
+ <T = void>(ms: number, resolved?: T): Promise<T>;
157
+ }
144
158
  /**
145
159
  * Safe function type returned by createSafe.
146
160
  *
@@ -190,6 +204,8 @@ export interface SafeFnWithUtils extends SafeFn {
190
204
  any: SafeAny;
191
205
  /** Wrap callback to only execute if not cancelled */
192
206
  callback: SafeCallback;
207
+ /** Delay execution, never resolves if cancelled */
208
+ delay: SafeDelay;
193
209
  }
194
210
  /**
195
211
  * Create a safe function for a given context.
@@ -1 +1 @@
1
- {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../src/async/safe.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAM1D;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,CAO3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAkBtE;AA6CD;;;GAGG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,MAAM,CAAC,GACpD,OAAO,CAAC,CAAC,CAAC,GACV,OAAO,CAAC,CAAC,CAAC,CAAC;AAMf,KAAK,kBAAkB,CAAC,CAAC,SAAS,SAAS,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI;IAC7D,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAChD,CAAC;AAEF,KAAK,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI;KAClE,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,WAAW,OAAO;IACtB;;;;;OAKG;IACH,CAAC,CAAC,SAAS,SAAS,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAC5D,kBAAkB,CAAC,CAAC,CAAC,CACtB,CAAC;IAEF;;;;;;;;OAQG;IACH,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAC5D,mBAAmB,CAAC,CAAC,CAAC,CACvB,CAAC;CACH;AAMD,KAAK,mBAAmB,CAAC,CAAC,SAAS,SAAS,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,eAAe,CAC7E,CAAC,CAAC,MAAM,CAAC,CACV,CAAC;AAEF,KAAK,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI;KACnE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3C,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,MAAM,WAAW,QAAQ;IACvB;;;;;OAKG;IACH,CAAC,CAAC,SAAS,SAAS,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAC5D,mBAAmB,CAAC,CAAC,CAAC,CACvB,CAAC;IAEF;;;;;;;;;OASG;IACH,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAC5D,oBAAoB,CAAC,CAAC,CAAC,CACxB,CAAC;CACH;AAMD,KAAK,sBAAsB,CAAC,CAAC,SAAS,SAAS,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI;IACjE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtE,CAAC;AAEF,KAAK,uBAAuB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI;KACtE,CAAC,IAAI,MAAM,CAAC,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;OASG;IACH,CAAC,CAAC,SAAS,SAAS,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAC5D,sBAAsB,CAAC,CAAC,CAAC,CAC1B,CAAC;IAEF;;;;;;;;;OASG;IACH,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAC5D,uBAAuB,CAAC,CAAC,CAAC,CAC3B,CAAC;CACH;AAMD,MAAM,WAAW,OAAO;IACtB;;;;;OAKG;IACH,CAAC,CAAC,SAAS,SAAS,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAC5D,mBAAmB,CAAC,CAAC,CAAC,CACvB,CAAC;IAEF;;;;;;;;OAQG;IACH,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAC5D,oBAAoB,CAAC,CAAC,CAAC,CACxB,CAAC;CACH;AAMD,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;OASG;IACH,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,IAAI,GAAG,CACzD,GAAG,IAAI,EAAE,KAAK,KACX,IAAI,CAAC;CACX;AAMD;;;;;;;GAOG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;;;;OAQG;IACH,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzC;;;;;OAKG;IACH,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EAC3B,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,EAC/B,GAAG,IAAI,EAAE,KAAK,GACb,OAAO,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAE/D;;;;;;OAMG;IACH,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EAC3B,EAAE,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAC7B,GAAG,IAAI,EAAE,KAAK,GACb,OAAO,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,MAAM;IAC7C,sCAAsC;IACtC,GAAG,EAAE,OAAO,CAAC;IACb,2CAA2C;IAC3C,IAAI,EAAE,QAAQ,CAAC;IACf,wDAAwD;IACxD,OAAO,EAAE,WAAW,CAAC;IACrB,qCAAqC;IACrC,GAAG,EAAE,OAAO,CAAC;IACb,qDAAqD;IACrD,QAAQ,EAAE,YAAY,CAAC;CACxB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,WAAW,GAAG,SAAS,EACxC,WAAW,EAAE,MAAM,OAAO,GACzB,eAAe,CAwMjB"}
1
+ {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../src/async/safe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { AutoDisposeOptions } from '../types';
2
+
3
+ /**
4
+ * Check if value is an object (can have dispose method).
5
+ * Primitives (string, number, boolean, etc.) are skipped for disposal tracking.
6
+ */
7
+ export declare function isObject(value: unknown): value is object;
8
+ /**
9
+ * Get or create a disposal group by name.
10
+ * Named groups are shared across all collections using the same name.
11
+ */
12
+ export declare function getNamedGroup(name: string): DisposalGroup;
13
+ /**
14
+ * Full options for auto-dispose with group and grace period.
15
+ */
16
+ export interface FocusAutoDisposeOptions {
17
+ /** Disposal group - either a DisposalGroup instance or a named group string */
18
+ group?: DisposalGroup | string;
19
+ /** Grace period in ms before disposing (default: 0) */
20
+ gracePeriodMs?: number;
21
+ }
22
+ /**
23
+ * Unified auto-dispose option type.
24
+ * - `false` / `undefined`: No auto-disposal
25
+ * - `true`: Dispose immediately via microtask
26
+ * - `number`: Grace period in ms (e.g., `100` = 100ms delay)
27
+ * - `string`: Named group (shared across collections using same name)
28
+ * - `DisposalGroup`: Direct group instance
29
+ * - `{ group, gracePeriodMs }`: Full options object
30
+ */
31
+ export type FocusAutoDispose = boolean | number | string | DisposalGroup | FocusAutoDisposeOptions;
32
+ /**
33
+ * Normalized result of parsing autoDispose option.
34
+ */
35
+ export interface NormalizedAutoDispose {
36
+ enabled: true;
37
+ gracePeriodMs: number;
38
+ group: DisposalGroup | null;
39
+ }
40
+ /**
41
+ * Normalize autoDispose option to a standard format.
42
+ */
43
+ export declare function normalizeAutoDispose(autoDispose: FocusAutoDispose | undefined): NormalizedAutoDispose | false;
44
+ /**
45
+ * @deprecated Use normalizeAutoDispose instead
46
+ */
47
+ export declare function normalizeAutoDisposeOptions(autoDispose: boolean | AutoDisposeOptions | undefined): AutoDisposeOptions | false;
48
+ /**
49
+ * Disposal group for coordinating disposal across multiple collections.
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * const group = disposalGroup();
54
+ *
55
+ * const listA = focus('listA').as(list({ group }));
56
+ * const listB = focus('listB').as(list({ group }));
57
+ *
58
+ * // Moving item from A to B won't dispose it
59
+ * const item = listA.pop(); // schedules disposal in group
60
+ * listB.push(item); // cancels disposal because item is still in group
61
+ * ```
62
+ */
63
+ export interface DisposalGroup {
64
+ /**
65
+ * Schedule items for disposal.
66
+ * Items will be disposed after the grace period unless cancelled.
67
+ */
68
+ scheduleDisposal(items: unknown[], gracePeriodMs: number): void;
69
+ /**
70
+ * Cancel disposal for items that are being re-added.
71
+ */
72
+ cancelDisposal(items: unknown[]): void;
73
+ /**
74
+ * Check if an item is pending disposal.
75
+ */
76
+ isPending(item: unknown): boolean;
77
+ /**
78
+ * Force immediate disposal of all pending items.
79
+ */
80
+ flush(): void;
81
+ }
82
+ /**
83
+ * Create a disposal group for coordinating disposal across collections.
84
+ */
85
+ export declare function disposalGroup(): DisposalGroup;
86
+ /**
87
+ * Create a local disposal tracker for a single collection.
88
+ * Uses microtask scheduling with cancellation support.
89
+ */
90
+ export declare function createLocalDisposalTracker(gracePeriodMs: number): {
91
+ scheduleDisposal(items: unknown[]): void;
92
+ cancelDisposal(items: unknown[]): void;
93
+ isPending(item: unknown): boolean;
94
+ };
95
+ //# sourceMappingURL=disposalGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disposalGroup.d.ts","sourceRoot":"","sources":["../../src/core/disposalGroup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAOnD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAQD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAOzD;AAMD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,+EAA+E;IAC/E,KAAK,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;IAC/B,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,MAAM,GACN,MAAM,GACN,aAAa,GACb,uBAAuB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,IAAI,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;CAC7B;AAgBD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,gBAAgB,GAAG,SAAS,GACxC,qBAAqB,GAAG,KAAK,CAuC/B;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,OAAO,GAAG,kBAAkB,GAAG,SAAS,GACpD,kBAAkB,GAAG,KAAK,CAI5B;AAMD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhE;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEvC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAElC;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,aAAa,CA2D7C;AAMD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,MAAM;4BAOpC,OAAO,EAAE,GAAG,IAAI;0BAuBlB,OAAO,EAAE,GAAG,IAAI;oBAatB,OAAO,GAAG,OAAO;EAIpC"}
@@ -1,5 +1,12 @@
1
- import { Focus, PickEquality } from '../types';
2
-
1
+ /**
2
+ * Focus Helpers - Convenient APIs for common state mutations.
3
+ *
4
+ * This module provides:
5
+ * - Reducer helpers (toggle, increment, etc.) for use with list.set() and map.set()
6
+ * - Re-exports list() and map() from their dedicated modules
7
+ */
8
+ export { list, disposalGroup, getNamedGroup, type ListOptions, type FocusList, type DisposalGroup, type FocusAutoDispose, type FocusAutoDisposeOptions, } from './list';
9
+ export { map, type MapOptions, type FocusMap } from './map';
3
10
  /**
4
11
  * Toggle a boolean value. Works with undefined (treats as false).
5
12
  *
@@ -96,163 +103,4 @@ export declare function merge<T extends object>(partial: Partial<T>): (prev: T |
96
103
  * ```
97
104
  */
98
105
  export declare function reset<T>(defaultValue: T): (prev: T | undefined) => T;
99
- /**
100
- * Options for the list helper.
101
- */
102
- export interface ListOptions {
103
- /** Auto-dispose items when removed. Defaults to false */
104
- autoDispose?: boolean;
105
- }
106
- /**
107
- * List API returned by the list() helper.
108
- */
109
- export interface FocusList<T> {
110
- /** Get the current array (returns empty array if undefined/null) */
111
- get(): T[];
112
- /** Get item at index */
113
- at(index: number): T | undefined;
114
- /** Get the length of the array */
115
- length(): number;
116
- /** Check if array is empty */
117
- isEmpty(): boolean;
118
- /** Get the first item */
119
- first(): T | undefined;
120
- /** Get the last item */
121
- last(): T | undefined;
122
- /** Push item(s) to the end */
123
- push(...items: T[]): void;
124
- /** Add item(s) to the beginning */
125
- unshift(...items: T[]): void;
126
- /** Remove and return the last item (auto-disposes if enabled) */
127
- pop(): T | undefined;
128
- /** Remove and return the first item (auto-disposes if enabled) */
129
- shift(): T | undefined;
130
- /** Remove item(s) by reference (auto-disposes if enabled) */
131
- remove(...items: T[]): number;
132
- /** Remove item at index (auto-disposes if enabled) */
133
- removeAt(index: number): T | undefined;
134
- /** Remove items matching predicate (auto-disposes if enabled) */
135
- removeWhere(predicate: (item: T, index: number) => boolean): number;
136
- /** Insert item at index */
137
- insert(index: number, ...items: T[]): void;
138
- /**
139
- * Set item at index (auto-disposes old item if enabled).
140
- * Accepts direct value, reducer, or immer-style updater.
141
- *
142
- * @example
143
- * items.set(0, newItem); // Direct value
144
- * items.set(0, prev => ({ ...prev, done: true })); // Reducer
145
- * items.set(0, draft => { draft.done = true }); // Updater (mutates draft)
146
- */
147
- set(index: number, itemOrReducerOrUpdater: T | ((prev: T) => T | void)): void;
148
- /** Clear all items (auto-disposes all if enabled) */
149
- clear(): void;
150
- /** Replace entire array (auto-disposes old items if enabled) */
151
- replace(items: T[]): void;
152
- /** Find item matching predicate */
153
- find(predicate: (item: T, index: number) => boolean): T | undefined;
154
- /** Find index of item matching predicate */
155
- findIndex(predicate: (item: T, index: number) => boolean): number;
156
- /** Check if item exists */
157
- includes(item: T): boolean;
158
- /** Map items (read-only, doesn't mutate) */
159
- map<U>(fn: (item: T, index: number) => U): U[];
160
- /** Filter items (read-only, doesn't mutate) */
161
- filter(predicate: (item: T, index: number) => boolean): T[];
162
- /** Create a pick selector for fine-grained reactivity */
163
- pick(equality?: PickEquality<T[] | undefined | null>): T[];
164
- }
165
- /**
166
- * Create a list helper for array focus.
167
- * Handles undefined/null arrays gracefully.
168
- *
169
- * @example
170
- * ```ts
171
- * const todoStore = store({
172
- * name: 'todos',
173
- * state: { items: [] as TodoItem[] },
174
- * setup({ focus }) {
175
- * const items = focus('items').as(list());
176
- * return {
177
- * addTodo: (text: string) => items.push({ id: Date.now(), text, done: false }),
178
- * removeTodo: (todo: TodoItem) => items.remove(todo),
179
- * clearDone: () => items.removeWhere(item => item.done),
180
- * clearAll: () => items.clear(),
181
- * };
182
- * },
183
- * });
184
- * ```
185
- */
186
- export declare function list<T>(options?: ListOptions): (focus: Focus<T[] | undefined | null> | Focus<T[] | undefined> | Focus<T[] | null> | Focus<T[]>) => FocusList<T>;
187
- /**
188
- * Options for the map helper.
189
- */
190
- export interface MapOptions {
191
- /** Auto-dispose values when removed. Defaults to false */
192
- autoDispose?: boolean;
193
- }
194
- /**
195
- * Map API returned by the map() helper.
196
- */
197
- export interface FocusMap<T> {
198
- /** Get the current record (returns defaultValue if undefined/null) */
199
- get(): Record<string, T>;
200
- /** Get value by key */
201
- at(key: string): T | undefined;
202
- /** Get number of entries */
203
- size(): number;
204
- /** Check if record is empty */
205
- isEmpty(): boolean;
206
- /** Check if key exists */
207
- has(key: string): boolean;
208
- /**
209
- * Set value at key (auto-disposes old value if enabled).
210
- * Accepts direct value, reducer, or immer-style updater.
211
- *
212
- * @example
213
- * cache.set('count', 10); // Direct value
214
- * cache.set('count', prev => prev + 1); // Reducer (returns new value)
215
- * cache.set('user', draft => { draft.age++ }); // Updater (mutates draft)
216
- */
217
- set(key: string, valueOrReducerOrUpdater: T | ((prev: T) => T | void)): void;
218
- /** Delete key(s) (auto-disposes values if enabled) */
219
- delete(...keys: string[]): number;
220
- /** Delete keys matching predicate (auto-disposes values if enabled) */
221
- deleteWhere(predicate: (value: T, key: string) => boolean): number;
222
- /** Clear all entries (auto-disposes all values if enabled) */
223
- clear(): void;
224
- /** Replace entire record (auto-disposes old values if enabled) */
225
- replace(record: Record<string, T>): void;
226
- /** Get all keys */
227
- keys(): string[];
228
- /** Get all values */
229
- values(): T[];
230
- /** Get all entries */
231
- entries(): [string, T][];
232
- /** Create a pick selector for fine-grained reactivity */
233
- pick(equality?: PickEquality<Record<string, T> | undefined | null>): Record<string, T>;
234
- }
235
- /**
236
- * Create a map helper for object/record focus.
237
- * Handles undefined/null records gracefully.
238
- *
239
- * @example
240
- * ```ts
241
- * const cacheStore = store({
242
- * name: 'cache',
243
- * state: { users: {} as Record<string, User> },
244
- * setup({ focus }) {
245
- * const users = focus('users').as(map());
246
- * return {
247
- * setUser: (id: string, user: User) => users.set(id, user),
248
- * getUser: (id: string) => users.at(id),
249
- * removeUser: (id: string) => users.delete(id),
250
- * hasUser: (id: string) => users.has(id),
251
- * clearUsers: () => users.clear(),
252
- * };
253
- * },
254
- * });
255
- * ```
256
- */
257
- export declare function map<T>(options?: MapOptions): (focus: Focus<Record<string, T> | undefined | null> | Focus<Record<string, T> | undefined> | Focus<Record<string, T> | null> | Focus<Record<string, T>>) => FocusMap<T>;
258
106
  //# sourceMappingURL=focusHelpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"focusHelpers.d.ts","sourceRoot":"","sources":["../../src/core/focusHelpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focusHelpers.d.ts","sourceRoot":"","sources":["../../src/core/focusHelpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EACL,IAAI,EACJ,aAAa,EACb,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAC;AAM5D;;;;;;;;GAQG;AACH,wBAAgB,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,KAAK,OAAO,CAE/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,MAAM,GAAE,MAAU,GACjB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAEtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,MAAM,GAAE,MAAU,GACjB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAEtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAE7E;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAE5E;AAED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAEtC;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAE3E;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAE5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EACpC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAClB,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,CAE5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,CAEpE"}