storion 0.18.0 → 0.20.1

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/CHANGELOG.md CHANGED
@@ -7,6 +7,78 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.20.1] - 2025-12-31
11
+
12
+ ### Fixed
13
+
14
+ - Fixed circular dependency warnings in async module (Metro/Expo). Extracted `isAbortable` and `abortableSymbol` to separate `abortable-guard.ts` file, and changed `toPromise` import to source from `utils.ts` directly instead of `async.ts`.
15
+
16
+ - Fixed Hot Module Replacement (HMR) causing "store disposed" errors with `scoped()` stores. Both `normalStrategy` and `strictStrategy` now use deferred disposal (50ms and 100ms respectively) to allow HMR bundle loading to complete before disposal fires. Previously, `normalStrategy` disposed immediately on cleanup, which raced with Metro's async module reloading.
17
+
18
+ ## [0.20.0] - 2025-12-30
19
+
20
+ ## [0.19.0] - 2025-12-30
21
+
22
+ ### Added
23
+
24
+ - `mixins()` now accepts a `StoreSpec` and returns a proxy for accessing state properties and actions as mixins:
25
+ ```ts
26
+ const userStore = store({
27
+ state: { name: "", age: 0 },
28
+ setup: ({ state }) => ({
29
+ setName: (name: string) => { state.name = name; },
30
+ }),
31
+ });
32
+
33
+ const proxy = mixins(userStore);
34
+
35
+ // Use in useStore
36
+ const { name, setName } = useStore(mixins({
37
+ name: proxy.name, // mixin for state.name
38
+ setName: proxy.setName, // mixin for actions.setName
39
+ }));
40
+
41
+ // Equivalent to:
42
+ // const nameMixin = (ctx) => ctx.get(userStore)[0].name;
43
+ // const setNameMixin = (ctx) => ctx.get(userStore)[1].setName;
44
+ ```
45
+
46
+ - `MixinProxy` now has a `select()` method for selecting multiple properties/actions:
47
+ ```ts
48
+ const proxy = mixins(userStore);
49
+
50
+ // Array syntax - use property names as keys
51
+ const userMixin = proxy.select(["name", "age", "setName"]);
52
+ // Returns: (ctx) => ({ name: string, age: number, setName: function })
53
+
54
+ // Object syntax - map to custom keys
55
+ const userMixin = proxy.select({ userName: "name", userAge: "age", updateName: "setName" });
56
+ // Returns: (ctx) => ({ userName: string, userAge: number, updateName: function })
57
+
58
+ // Use in useStore
59
+ const { name, age, setName } = useStore(userMixin);
60
+ ```
61
+
62
+ Mixins are cached when accessed, so `select()` reuses cached mixins for better performance.
63
+
64
+ - `mixins()` now accepts a `Factory` (service factory) and returns a proxy for accessing service properties as mixins:
65
+ ```ts
66
+ const dbService = (resolver: Resolver) => ({
67
+ users: { getAll: () => [] },
68
+ posts: { getAll: () => [] },
69
+ });
70
+
71
+ const proxy = mixins(dbService);
72
+
73
+ // Use in useStore
74
+ const { users } = useStore(mixins({
75
+ users: proxy.users, // mixin for service.users
76
+ }));
77
+
78
+ // Equivalent to:
79
+ // const usersMixin = (ctx) => ctx.get(dbService).users;
80
+ ```
81
+
10
82
  ### Changed
11
83
 
12
84
  - Updated React peer dependency requirement from `^18.0.0 || ^19.0.0` and development dependencies to React 19. The library now fully supports React 19's improved Suspense behavior and concurrent rendering.
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Abortable type guard and symbol.
3
+ *
4
+ * Extracted to a separate file to avoid circular dependencies
5
+ * between safe.ts and abortable.ts.
6
+ */
7
+ /**
8
+ * Symbol used to identify Abortable functions.
9
+ * @internal
10
+ */
11
+ export declare const abortableSymbol: unique symbol;
12
+ /**
13
+ * Check if a value is an Abortable function.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * if (isAbortable(fn)) {
18
+ * fn.withSignal(signal, ...args);
19
+ * }
20
+ * ```
21
+ */
22
+ export declare function isAbortable(fn: unknown): fn is {
23
+ withSignal: Function;
24
+ };
25
+ //# sourceMappingURL=abortable-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abortable-guard.d.ts","sourceRoot":"","sources":["../../src/async/abortable-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;GAGG;AACH,eAAO,MAAM,eAAe,eAAkC,CAAC;AAM/D;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI;IAAE,UAAU,EAAE,QAAQ,CAAA;CAAE,CAMvE"}
@@ -1,6 +1,7 @@
1
1
  import { SafeFnWithUtils } from './safe';
2
+ import { abortableSymbol, isAbortable } from './abortable-guard';
2
3
 
3
- declare const abortableSymbol: unique symbol;
4
+ export { isAbortable };
4
5
  export type AbortableStatus = "running" | "success" | "error" | "paused" | "waiting" | "aborted";
5
6
  /**
6
7
  * Send function type.
@@ -236,10 +237,6 @@ export interface Abortable<TArgs extends any[], TResult, TYield extends void | o
236
237
  /** Type brand for discrimination */
237
238
  readonly [abortableSymbol]: true;
238
239
  }
239
- /**
240
- * Check if a value is an Abortable.
241
- */
242
- export declare function isAbortable<TArgs extends any[], TResult, TYield extends void | object = void>(fn: unknown): fn is Abortable<TArgs, TResult, TYield>;
243
240
  /**
244
241
  * Error thrown when abortable is aborted.
245
242
  */
@@ -291,5 +288,4 @@ export declare class AbortableAbortedError extends Error {
291
288
  * ```
292
289
  */
293
290
  export declare function abortable<const TArgs extends any[], TResult, TYield extends void | object = void>(fn: AbortableFn<TArgs, TResult, TYield>): Abortable<TArgs, TResult, TYield>;
294
- export {};
295
291
  //# sourceMappingURL=abortable.d.ts.map
@@ -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,6 +1,271 @@
1
- import { a, b, c } from "../async-D0oaIaAZ.js";
2
- import { r as retryStrategy, d as dev } from "../effect-YVnKUiyL.js";
3
- import { b as b2, A, a as a2, c as c2, g, i, t } from "../effect-YVnKUiyL.js";
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import { a, b, c } from "../async-BwwGEvA0.js";
5
+ import { a as abortableSymbol, c as createSafe, i as isAbortable, r as retryStrategy, d as dev } from "../effect-BK2j3cpd.js";
6
+ import { b as b2, A, g, t } from "../effect-BK2j3cpd.js";
7
+ class AbortableAbortedError extends Error {
8
+ constructor(message = "Abortable was aborted") {
9
+ super(message);
10
+ __publicField(this, "name", "AbortableAbortedError");
11
+ }
12
+ }
13
+ function createAbortableContext(controller, pauseState, takeState, setStatus) {
14
+ const signal = controller.signal;
15
+ const checkPauseAndAbort = async () => {
16
+ if (signal.aborted) {
17
+ throw new AbortableAbortedError();
18
+ }
19
+ if (pauseState.isPaused) {
20
+ setStatus("paused");
21
+ await new Promise((resolve) => {
22
+ pauseState.resumeResolve = resolve;
23
+ });
24
+ pauseState.resumeResolve = null;
25
+ setStatus("running");
26
+ }
27
+ if (signal.aborted) {
28
+ throw new AbortableAbortedError();
29
+ }
30
+ };
31
+ const afterCheck = async (value) => {
32
+ await checkPauseAndAbort();
33
+ return value;
34
+ };
35
+ const join = (resultOrResults) => {
36
+ if (signal.aborted) {
37
+ return Promise.reject(new AbortableAbortedError());
38
+ }
39
+ const isArray = Array.isArray(resultOrResults);
40
+ const results = isArray ? resultOrResults : [resultOrResults];
41
+ const abortAll = () => {
42
+ for (const result of results) {
43
+ result.abort();
44
+ }
45
+ };
46
+ signal.addEventListener("abort", abortAll, { once: true });
47
+ const promise = Promise.all(results).then(async (values) => {
48
+ signal.removeEventListener("abort", abortAll);
49
+ await checkPauseAndAbort();
50
+ return isArray ? values : values[0];
51
+ }).catch(async (error) => {
52
+ signal.removeEventListener("abort", abortAll);
53
+ abortAll();
54
+ if (signal.aborted) {
55
+ throw new AbortableAbortedError();
56
+ }
57
+ throw error;
58
+ });
59
+ return promise;
60
+ };
61
+ const baseSafe = createSafe(
62
+ () => signal,
63
+ () => signal.aborted
64
+ );
65
+ const safeFn = async (fnOrPromise, ...args) => {
66
+ if (isAbortable(fnOrPromise)) {
67
+ const abortableResult = fnOrPromise.withSignal(signal, ...args);
68
+ return join(abortableResult);
69
+ }
70
+ const result = await baseSafe(fnOrPromise, ...args);
71
+ await checkPauseAndAbort();
72
+ return result;
73
+ };
74
+ const safe = Object.assign(safeFn, {
75
+ all: baseSafe.all,
76
+ race: baseSafe.race,
77
+ settled: baseSafe.settled,
78
+ any: baseSafe.any,
79
+ callback: baseSafe.callback,
80
+ delay: baseSafe.delay
81
+ });
82
+ const take = (key) => {
83
+ const takeKey = String(key ?? "__checkpoint__");
84
+ if (signal.aborted) {
85
+ return Promise.reject(new AbortableAbortedError());
86
+ }
87
+ const existing = takeState.pendingTakes.get(takeKey);
88
+ if (existing) {
89
+ return existing.promise.then(afterCheck);
90
+ }
91
+ let resolve;
92
+ let reject;
93
+ const promise = new Promise((res, rej) => {
94
+ resolve = res;
95
+ reject = rej;
96
+ });
97
+ takeState.pendingTakes.set(takeKey, {
98
+ resolve,
99
+ reject,
100
+ promise
101
+ });
102
+ setStatus("waiting");
103
+ return promise.then(afterCheck);
104
+ };
105
+ return {
106
+ signal,
107
+ safe,
108
+ take,
109
+ join,
110
+ aborted: () => signal.aborted,
111
+ abort: () => {
112
+ if (signal.aborted) return false;
113
+ controller.abort();
114
+ return true;
115
+ },
116
+ checkpoint: checkPauseAndAbort
117
+ };
118
+ }
119
+ function createSend(takeState, setStatus) {
120
+ return (key, value) => {
121
+ const takeKey = String(key ?? "__checkpoint__");
122
+ const pending = takeState.pendingTakes.get(takeKey);
123
+ if (pending) {
124
+ pending.resolve(value);
125
+ takeState.pendingTakes.delete(takeKey);
126
+ setStatus("running");
127
+ }
128
+ };
129
+ }
130
+ function executeAbortable(fn, args, parentSignal) {
131
+ const controller = new AbortController();
132
+ if (parentSignal) {
133
+ if (parentSignal.aborted) {
134
+ controller.abort();
135
+ } else {
136
+ const onParentAbort = () => controller.abort();
137
+ parentSignal.addEventListener("abort", onParentAbort, { once: true });
138
+ controller.signal.addEventListener(
139
+ "abort",
140
+ () => parentSignal.removeEventListener("abort", onParentAbort),
141
+ { once: true }
142
+ );
143
+ }
144
+ }
145
+ let status = "running";
146
+ let resultValue;
147
+ let errorValue;
148
+ const pauseState = {
149
+ isPaused: false,
150
+ resumeResolve: null
151
+ };
152
+ const takeState = {
153
+ pendingTakes: /* @__PURE__ */ new Map()
154
+ };
155
+ const setStatus = (newStatus) => {
156
+ if (!["success", "error", "aborted"].includes(status)) {
157
+ status = newStatus;
158
+ }
159
+ };
160
+ const ctx = createAbortableContext(
161
+ controller,
162
+ pauseState,
163
+ takeState,
164
+ setStatus
165
+ );
166
+ const wrappedFn = async () => {
167
+ try {
168
+ if (controller.signal.aborted) {
169
+ throw new AbortableAbortedError();
170
+ }
171
+ const result = await fn(ctx, ...args);
172
+ return result;
173
+ } catch (e) {
174
+ if (controller.signal.aborted) {
175
+ throw new AbortableAbortedError();
176
+ }
177
+ throw e;
178
+ }
179
+ };
180
+ const promise = wrappedFn().then((result) => {
181
+ status = "success";
182
+ resultValue = result;
183
+ return result;
184
+ }).catch((error) => {
185
+ if (error instanceof AbortableAbortedError || controller.signal.aborted) {
186
+ status = "aborted";
187
+ errorValue = error instanceof Error ? error : new AbortableAbortedError();
188
+ } else {
189
+ status = "error";
190
+ errorValue = error instanceof Error ? error : new Error(String(error));
191
+ }
192
+ throw errorValue;
193
+ });
194
+ const send = createSend(takeState, setStatus);
195
+ return Object.assign(promise, {
196
+ send,
197
+ // Status checks
198
+ failed: () => status === "error",
199
+ completed: () => ["success", "error", "aborted"].includes(status),
200
+ running: () => status === "running",
201
+ succeeded: () => status === "success",
202
+ paused: () => status === "paused",
203
+ waiting: () => status === "waiting",
204
+ aborted: () => status === "aborted",
205
+ status: () => status,
206
+ // Result access
207
+ result: () => resultValue,
208
+ error: () => errorValue,
209
+ // Control methods
210
+ pause: () => {
211
+ if (pauseState.isPaused || ["success", "error", "aborted"].includes(status)) {
212
+ return false;
213
+ }
214
+ pauseState.isPaused = true;
215
+ status = "paused";
216
+ return true;
217
+ },
218
+ resume: () => {
219
+ if (!pauseState.isPaused) {
220
+ return false;
221
+ }
222
+ pauseState.isPaused = false;
223
+ status = "running";
224
+ if (pauseState.resumeResolve) {
225
+ pauseState.resumeResolve();
226
+ }
227
+ return true;
228
+ },
229
+ abort: () => {
230
+ if (controller.signal.aborted || ["success", "error"].includes(status)) {
231
+ return false;
232
+ }
233
+ status = "aborted";
234
+ controller.abort();
235
+ const abortError = new AbortableAbortedError();
236
+ for (const [, pending] of takeState.pendingTakes) {
237
+ pending.reject(abortError);
238
+ }
239
+ takeState.pendingTakes.clear();
240
+ if (pauseState.resumeResolve) {
241
+ pauseState.resumeResolve();
242
+ }
243
+ return true;
244
+ }
245
+ });
246
+ }
247
+ function abortable(fn) {
248
+ const wrapper = (...args) => {
249
+ return executeAbortable(fn, args);
250
+ };
251
+ wrapper.withSignal = (signal, ...args) => {
252
+ return executeAbortable(fn, args, signal);
253
+ };
254
+ wrapper.use = (wrapperFn) => {
255
+ const wrappedHandler = wrapperFn(fn);
256
+ return abortable(wrappedHandler);
257
+ };
258
+ wrapper.as = () => {
259
+ return wrapper;
260
+ };
261
+ Object.defineProperty(wrapper, abortableSymbol, {
262
+ value: true,
263
+ writable: false,
264
+ enumerable: false,
265
+ configurable: false
266
+ });
267
+ return wrapper;
268
+ }
4
269
  function retry(retriesOrStrategyOrOptions) {
5
270
  const options = typeof retriesOrStrategyOrOptions === "number" ? { retries: retriesOrStrategyOrOptions } : typeof retriesOrStrategyOrOptions === "string" ? { delay: retriesOrStrategyOrOptions } : retriesOrStrategyOrOptions ?? {};
6
271
  const retries = options.retries ?? 3;
@@ -284,18 +549,18 @@ function observe(onStart) {
284
549
  export {
285
550
  b2 as AsyncAggregateError,
286
551
  A as AsyncNotReadyError,
287
- a2 as abortable,
552
+ abortable,
288
553
  a as async,
289
554
  b as asyncState,
290
555
  c as asyncStateFrom,
291
556
  cache,
292
557
  catchError,
293
558
  circuitBreaker,
294
- c2 as createSafe,
559
+ createSafe,
295
560
  debounce,
296
561
  fallback,
297
562
  g as getPendingPromise,
298
- i as isAbortable,
563
+ isAbortable,
299
564
  logging,
300
565
  map,
301
566
  observe,
@@ -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;AAO1D;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,CAO3E;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,MAAM,WAAW,SAAS;IACxB;;;;;;;;;;OAUG;IACH,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAClD;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;IACvB,mDAAmD;IACnD,KAAK,EAAE,SAAS,CAAC;CAClB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,WAAW,GAAG,SAAS,EACxC,WAAW,EAAE,MAAM,OAAO,GACzB,eAAe,CA4NjB"}
1
+ {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../src/async/safe.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { G as stateToJSON, c as createSafe, e as isSpec, k as storeTuple, B as SetupPhaseError, u as untrack, J as pendingPromises, K as createCancellablePromise, M as createAbortError, N as promiseTry, i as isAbortable, s as store, g as getPendingPromise, A as AsyncNotReadyError, O as getData, b as AsyncAggregateError, Q as isAsyncState, R as toPromiseWithState, T as isAsyncOrPromise, q as effect, f as AsyncFunctionError, U as state, V as invoke, W as delay } from "./effect-YVnKUiyL.js";
1
+ import { G as stateToJSON, c as createSafe, e as isSpec, k as storeTuple, B as SetupPhaseError, u as untrack, J as pendingPromises, K as createCancellablePromise, M as createAbortError, N as promiseTry, i as isAbortable, s as store, g as getPendingPromise, A as AsyncNotReadyError, O as getData, b as AsyncAggregateError, Q as isAsyncState, R as toPromiseWithState, T as isAsyncOrPromise, q as effect, f as AsyncFunctionError, U as state, V as invoke, W as delay } from "./effect-BK2j3cpd.js";
2
2
  import { i as isPromiseLike } from "./isPromiseLike-bFkfHAbm.js";
3
3
  function asyncState(mode, status, dataOrError, errorOrExtra, extra) {
4
4
  let state2;
@@ -1,4 +1,4 @@
1
- import { Prettify } from '../types';
1
+ import { Prettify, StoreSpec, StateOf, ActionsOf, SelectorContext, Factory } from '../types';
2
2
 
3
3
  export type Mixin<TResult = any, TContext = any> = (context: TContext) => TResult;
4
4
  /**
@@ -89,6 +89,45 @@ type InferMixinArray<T extends readonly unknown[]> = T extends readonly [
89
89
  infer First,
90
90
  ...infer Rest
91
91
  ] ? InferMixinArrayItem<First> & InferMixinArray<Rest> : unknown;
92
+ /**
93
+ * Proxy type for accessing store state properties and actions as mixins.
94
+ * State properties return mixins that access state values.
95
+ * Actions return mixins that access action functions.
96
+ */
97
+ export type MixinProxy<TSpec extends StoreSpec<any, any>> = {
98
+ readonly [K in keyof StateOf<TSpec>]: Mixin<StateOf<TSpec>[K], SelectorContext>;
99
+ } & {
100
+ readonly [K in keyof ActionsOf<TSpec>]: Mixin<ActionsOf<TSpec>[K], SelectorContext>;
101
+ } & {
102
+ /**
103
+ * Select multiple properties/actions as a composed mixin.
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * // Array syntax - use property names as keys
108
+ * const proxy = mixins(userStore);
109
+ * const userMixin = proxy.select(["name", "age", "setName"]);
110
+ * // Returns: (ctx) => ({ name: string, age: number, setName: function })
111
+ *
112
+ * // Object syntax - map to custom keys
113
+ * const userMixin = proxy.select({ userName: "name", userAge: "age", updateName: "setName" });
114
+ * // Returns: (ctx) => ({ userName: string, userAge: number, updateName: function })
115
+ * ```
116
+ */
117
+ select<TKeys extends readonly (keyof StateOf<TSpec> | keyof ActionsOf<TSpec>)[]>(keys: TKeys): Mixin<{
118
+ readonly [K in TKeys[number]]: K extends keyof StateOf<TSpec> ? StateOf<TSpec>[K] : K extends keyof ActionsOf<TSpec> ? ActionsOf<TSpec>[K] : never;
119
+ }, SelectorContext>;
120
+ select<TMap extends Record<string, keyof StateOf<TSpec> | keyof ActionsOf<TSpec>>>(map: TMap): Mixin<{
121
+ readonly [K in keyof TMap]: TMap[K] extends keyof StateOf<TSpec> ? StateOf<TSpec>[TMap[K]] : TMap[K] extends keyof ActionsOf<TSpec> ? ActionsOf<TSpec>[TMap[K]] : never;
122
+ }, SelectorContext>;
123
+ };
124
+ /**
125
+ * Proxy type for accessing service factory properties as mixins.
126
+ * Each property of the service instance becomes a mixin.
127
+ */
128
+ export type ServiceMixinProxy<T> = {
129
+ readonly [K in keyof T]: Mixin<T[K], SelectorContext>;
130
+ };
92
131
  /**
93
132
  * Compose multiple mixins into a single mixin function.
94
133
  * Accepts any mixin type (Selector or Store context).
@@ -103,8 +142,27 @@ type InferMixinArray<T extends readonly unknown[]> = T extends readonly [
103
142
  * // Array syntax - merge mixins
104
143
  * const merged = mixins([selectUserMixin, { countMixin }]);
105
144
  * // Returns: (ctx) => { name: string, age: number, count: number }
145
+ *
146
+ * // Store spec syntax - proxy for state/actions
147
+ * const proxy = mixins(userStore);
148
+ * const { name, doSomething } = useStore(mixins({
149
+ * name: proxy.name,
150
+ * doSomething: proxy.doSomething,
151
+ * }));
152
+ *
153
+ * // Factory syntax - proxy for service properties
154
+ * const dbService = (resolver: Resolver) => ({
155
+ * users: { getAll: () => [] },
156
+ * posts: { getAll: () => [] },
157
+ * });
158
+ * const serviceProxy = mixins(dbService);
159
+ * const { users } = useStore(mixins({
160
+ * users: serviceProxy.users,
161
+ * }));
106
162
  * ```
107
163
  */
164
+ export declare function mixins<TSpec extends StoreSpec<any, any>>(spec: TSpec): MixinProxy<TSpec>;
165
+ export declare function mixins<T extends object>(factory: Factory<T, []>): ServiceMixinProxy<T>;
108
166
  export declare function mixins<const T extends readonly (Mixin<object> | Record<string, Mixin>)[]>(mixinArray: T): (context: ExtractArrayMixinContext<T>) => Prettify<InferMixinArray<T>>;
109
167
  export declare function mixins<const T extends Record<string, Mixin>>(mixinMap: T): (context: ExtractMixinContext<T>) => Prettify<StripMixinSuffixFromRecord<T>>;
110
168
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"mixins.d.ts","sourceRoot":"","sources":["../../src/core/mixins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,MAAM,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,CACjD,OAAO,EAAE,QAAQ,KACd,OAAO,CAAC;AAEb;;;;;;;;;;GAUG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAExD;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,GAC1E;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,GAC3D,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC,GACzE,CAAC,GACD,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,GACrB,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,GACtB,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,SAAS;IAC3E,MAAM,KAAK;IACX,GAAG,MAAM,IAAI,SAAS,UAAU,CAAC,CAAC,CAAC;CACpC,GACG,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,GACnD,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CACjE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAC7D,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CACvB,CAAC;AAEF;;GAEG;AACH,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GACvE,CAAC,GACD,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAC7B,CAAC,GACD,KAAK,CAAC;AAEV;;GAEG;AACH,KAAK,wBAAwB,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IACxD,CAAC,SAAS,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GAC3C,mBAAmB,CAAC,KAAK,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAC3D,KAAK,CAAC;AAEZ;;;;GAIG;AACH,KAAK,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,MAAM,OAAO,GACtE,MAAM,GACN,CAAC,CAAC;AAEN;;GAEG;AACH,KAAK,0BAA0B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI;IACjE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,GACtC,gBAAgB,CAAC,CAAC,CAAC,GACnB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAChD,CAAC;AAEF;;;GAGG;AACH,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GACjE,QAAQ,CAAC,CAAC,CAAC,GACX,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAC/B,0BAA0B,CAAC,CAAC,CAAC,GAC7B,KAAK,CAAC;AAEV;;GAEG;AACH,KAAK,eAAe,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI,CAAC,SAAS,SAAS;IACtE,MAAM,KAAK;IACX,GAAG,MAAM,IAAI;CACd,GACG,mBAAmB,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC;AAEZ;;;;;;;;;;;;;;;GAeG;AAEH,wBAAgB,MAAM,CACpB,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,EAElE,UAAU,EAAE,CAAC,GACZ,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1E,wBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC1D,QAAQ,EAAE,CAAC,GACV,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"mixins.d.ts","sourceRoot":"","sources":["../../src/core/mixins.ts"],"names":[],"mappings":"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"}