storion 0.10.2 → 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.
@@ -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":"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"}
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"}
@@ -0,0 +1,167 @@
1
+ import { Focus, PickEquality } from '../types';
2
+ import { FocusAutoDispose } from './disposalGroup';
3
+
4
+ /**
5
+ * Options for the list helper.
6
+ */
7
+ export interface ListOptions<T> {
8
+ /**
9
+ * Auto-dispose items when removed.
10
+ *
11
+ * - `false` / `undefined`: No auto-disposal (default)
12
+ * - `true`: Dispose immediately via microtask
13
+ * - `number`: Grace period in ms (e.g., `100` = 100ms delay)
14
+ * - `string`: Named disposal group (shared across collections)
15
+ * - `DisposalGroup`: Direct group instance
16
+ * - `{ group, gracePeriodMs }`: Full options
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * // Simple auto-dispose
21
+ * list({ autoDispose: true })
22
+ *
23
+ * // With 100ms grace period
24
+ * list({ autoDispose: 100 })
25
+ *
26
+ * // Named group - items moving between lists with same group name won't be disposed
27
+ * list({ autoDispose: "todos" })
28
+ *
29
+ * // Named group with grace period
30
+ * list({ autoDispose: { group: "todos", gracePeriodMs: 100 } })
31
+ *
32
+ * // Direct group instance
33
+ * const group = disposalGroup();
34
+ * list({ autoDispose: group })
35
+ * ```
36
+ */
37
+ autoDispose?: FocusAutoDispose;
38
+ /**
39
+ * Called when item(s) are added to the list.
40
+ */
41
+ onAdded?: (item: T, index: number) => void;
42
+ /**
43
+ * Called when item(s) are removed from the list.
44
+ */
45
+ onRemoved?: (item: T, index: number) => void;
46
+ }
47
+ /**
48
+ * List API returned by the list() helper.
49
+ */
50
+ export interface FocusList<T> {
51
+ /** Get the current array (returns empty array if undefined/null) */
52
+ get(): T[];
53
+ /** Get item at index */
54
+ at(index: number): T | undefined;
55
+ /** Get the length of the array */
56
+ length(): number;
57
+ /** Check if array is empty */
58
+ isEmpty(): boolean;
59
+ /** Get the first item */
60
+ first(): T | undefined;
61
+ /** Get the last item */
62
+ last(): T | undefined;
63
+ /** Push item(s) to the end */
64
+ push(...items: T[]): void;
65
+ /** Add item(s) to the beginning */
66
+ unshift(...items: T[]): void;
67
+ /** Remove and return the last item (auto-disposes if enabled) */
68
+ pop(): T | undefined;
69
+ /** Remove and return the first item (auto-disposes if enabled) */
70
+ shift(): T | undefined;
71
+ /** Remove item(s) by reference (auto-disposes if enabled) */
72
+ remove(...items: T[]): number;
73
+ /** Remove item at index (auto-disposes if enabled) */
74
+ removeAt(index: number): T | undefined;
75
+ /** Remove items matching predicate (auto-disposes if enabled) */
76
+ removeWhere(predicate: (item: T, index: number) => boolean): number;
77
+ /** Insert item at index */
78
+ insert(index: number, ...items: T[]): void;
79
+ /**
80
+ * Set item at index (auto-disposes old item if enabled).
81
+ * Accepts direct value, reducer, or immer-style updater.
82
+ *
83
+ * @example
84
+ * items.set(0, newItem); // Direct value
85
+ * items.set(0, prev => ({ ...prev, done: true })); // Reducer
86
+ * items.set(0, draft => { draft.done = true }); // Updater (mutates draft)
87
+ */
88
+ set(index: number, itemOrReducerOrUpdater: T | ((prev: T) => T | void)): void;
89
+ /**
90
+ * Get item at index, or create it if it doesn't exist.
91
+ *
92
+ * @example
93
+ * const item = items.tryGet(5, () => ({ id: 5, name: 'New' }));
94
+ */
95
+ tryGet(index: number, create: () => T): T;
96
+ /**
97
+ * Swap items at two indices.
98
+ *
99
+ * @example
100
+ * items.swap(0, 2); // Swap first and third items
101
+ */
102
+ swap(indexA: number, indexB: number): void;
103
+ /** Clear all items (auto-disposes all if enabled) */
104
+ clear(): void;
105
+ /** Replace entire array (auto-disposes old items if enabled) */
106
+ replace(items: T[]): void;
107
+ /** Find item matching predicate */
108
+ find(predicate: (item: T, index: number) => boolean): T | undefined;
109
+ /** Find index of item matching predicate */
110
+ findIndex(predicate: (item: T, index: number) => boolean): number;
111
+ /** Check if item exists */
112
+ includes(item: T): boolean;
113
+ /** Map items (read-only, doesn't mutate) */
114
+ map<U>(fn: (item: T, index: number) => U): U[];
115
+ /** Filter items (read-only, doesn't mutate) */
116
+ filter(predicate: (item: T, index: number) => boolean): T[];
117
+ /** Create a pick selector for fine-grained reactivity */
118
+ pick(equality?: PickEquality<T[] | undefined | null>): T[];
119
+ }
120
+ /**
121
+ * Create a list helper for array focus.
122
+ * Handles undefined/null arrays gracefully.
123
+ *
124
+ * @example
125
+ * ```ts
126
+ * const todoStore = store({
127
+ * name: 'todos',
128
+ * state: { items: [] as TodoItem[] },
129
+ * setup({ focus }) {
130
+ * const items = focus('items').as(list());
131
+ * return {
132
+ * addTodo: (text: string) => items.push({ id: Date.now(), text, done: false }),
133
+ * removeTodo: (todo: TodoItem) => items.remove(todo),
134
+ * clearDone: () => items.removeWhere(item => item.done),
135
+ * clearAll: () => items.clear(),
136
+ * };
137
+ * },
138
+ * });
139
+ * ```
140
+ *
141
+ * @example
142
+ * ```ts
143
+ * // With named disposal group for cross-collection moves
144
+ * const todoStore = store({
145
+ * name: 'todos',
146
+ * state: {
147
+ * active: [] as TodoItem[],
148
+ * completed: [] as TodoItem[],
149
+ * },
150
+ * setup({ focus }) {
151
+ * // Same group name = items moving between won't be disposed
152
+ * const active = focus('active').as(list({ autoDispose: "todos" }));
153
+ * const completed = focus('completed').as(list({ autoDispose: "todos" }));
154
+ *
155
+ * return {
156
+ * complete: (todo: TodoItem) => {
157
+ * active.remove(todo); // Schedules disposal
158
+ * completed.push(todo); // Cancels disposal - same group!
159
+ * },
160
+ * };
161
+ * },
162
+ * });
163
+ * ```
164
+ */
165
+ export declare function list<T>(options?: ListOptions<T>): (focus: Focus<T[] | undefined | null> | Focus<T[] | undefined> | Focus<T[] | null> | Focus<T[]>) => FocusList<T>;
166
+ export { disposalGroup, getNamedGroup, type DisposalGroup, type FocusAutoDispose, type FocusAutoDisposeOptions, } from './disposalGroup';
167
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/core/list.ts"],"names":[],"mappings":"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"}