reactjrx 1.135.6 → 1.139.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,4 +1,4 @@
1
- import { DefaultError, QueryClient, UseMutationOptions, UseMutationResult, UseMutateFunction, UseMutateAsyncFunction } from '@tanstack/react-query';
1
+ import { DefaultError, QueryClient, UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
2
2
  import { BehaviorSubject, Observable } from 'rxjs';
3
3
  export type UseMutation$Options<TData = unknown, TError = DefaultError, TVariables = void, TOnMutateResult = unknown> = Omit<UseMutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationFn"> & {
4
4
  mutationFn: ((variables: TVariables) => Observable<TData>) | Observable<TData>;
@@ -13,14 +13,14 @@ export declare function useMutation$<TData = unknown, TError = DefaultError, TVa
13
13
  isPending: false;
14
14
  isSuccess: false;
15
15
  status: "idle";
16
- mutate: UseMutateFunction<TData, TError, TVariables, TOnMutateResult>;
16
+ mutate: import('@tanstack/react-query').UseMutateFunction<TData, TError, TVariables, TOnMutateResult>;
17
17
  reset: () => void;
18
18
  context: TOnMutateResult | undefined;
19
19
  failureCount: number;
20
20
  failureReason: TError | null;
21
21
  isPaused: boolean;
22
22
  submittedAt: number;
23
- mutateAsync: UseMutateAsyncFunction<TData, TError, TVariables, TOnMutateResult>;
23
+ mutateAsync: import('@tanstack/react-query').UseMutateAsyncFunction<TData, TError, TVariables, TOnMutateResult>;
24
24
  } | {
25
25
  state$: BehaviorSubject<Pick<UseMutationResult<TData, TError, TVariables, TOnMutateResult>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
26
26
  data: undefined;
@@ -31,14 +31,14 @@ export declare function useMutation$<TData = unknown, TError = DefaultError, TVa
31
31
  isPending: true;
32
32
  isSuccess: false;
33
33
  status: "pending";
34
- mutate: UseMutateFunction<TData, TError, TVariables, TOnMutateResult>;
34
+ mutate: import('@tanstack/react-query').UseMutateFunction<TData, TError, TVariables, TOnMutateResult>;
35
35
  reset: () => void;
36
36
  context: TOnMutateResult | undefined;
37
37
  failureCount: number;
38
38
  failureReason: TError | null;
39
39
  isPaused: boolean;
40
40
  submittedAt: number;
41
- mutateAsync: UseMutateAsyncFunction<TData, TError, TVariables, TOnMutateResult>;
41
+ mutateAsync: import('@tanstack/react-query').UseMutateAsyncFunction<TData, TError, TVariables, TOnMutateResult>;
42
42
  } | {
43
43
  state$: BehaviorSubject<Pick<UseMutationResult<TData, TError, TVariables, TOnMutateResult>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
44
44
  data: undefined;
@@ -49,14 +49,14 @@ export declare function useMutation$<TData = unknown, TError = DefaultError, TVa
49
49
  isPending: false;
50
50
  isSuccess: false;
51
51
  status: "error";
52
- mutate: UseMutateFunction<TData, TError, TVariables, TOnMutateResult>;
52
+ mutate: import('@tanstack/react-query').UseMutateFunction<TData, TError, TVariables, TOnMutateResult>;
53
53
  reset: () => void;
54
54
  context: TOnMutateResult | undefined;
55
55
  failureCount: number;
56
56
  failureReason: TError | null;
57
57
  isPaused: boolean;
58
58
  submittedAt: number;
59
- mutateAsync: UseMutateAsyncFunction<TData, TError, TVariables, TOnMutateResult>;
59
+ mutateAsync: import('@tanstack/react-query').UseMutateAsyncFunction<TData, TError, TVariables, TOnMutateResult>;
60
60
  } | {
61
61
  state$: BehaviorSubject<Pick<UseMutationResult<TData, TError, TVariables, TOnMutateResult>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
62
62
  data: TData;
@@ -67,12 +67,12 @@ export declare function useMutation$<TData = unknown, TError = DefaultError, TVa
67
67
  isPending: false;
68
68
  isSuccess: true;
69
69
  status: "success";
70
- mutate: UseMutateFunction<TData, TError, TVariables, TOnMutateResult>;
70
+ mutate: import('@tanstack/react-query').UseMutateFunction<TData, TError, TVariables, TOnMutateResult>;
71
71
  reset: () => void;
72
72
  context: TOnMutateResult | undefined;
73
73
  failureCount: number;
74
74
  failureReason: TError | null;
75
75
  isPaused: boolean;
76
76
  submittedAt: number;
77
- mutateAsync: UseMutateAsyncFunction<TData, TError, TVariables, TOnMutateResult>;
77
+ mutateAsync: import('@tanstack/react-query').UseMutateAsyncFunction<TData, TError, TVariables, TOnMutateResult>;
78
78
  };
@@ -1,6 +1,5 @@
1
- import { DefaultError, QueryClient, QueryFunctionContext, QueryKey, skipToken, UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
1
+ import { DefaultError, QueryClient, QueryFunctionContext, QueryKey, skipToken, UseQueryOptions } from '@tanstack/react-query';
2
2
  import { Observable } from 'rxjs';
3
- import { NoInfer } from '@tanstack/query-core';
4
3
  export declare function useQuery$<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>({ queryFn, ...options }: Omit<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, "queryFn"> & {
5
4
  queryFn: ((context: QueryFunctionContext<TQueryKey>) => Observable<TQueryFnData>) | typeof skipToken | Observable<TQueryFnData>;
6
- }, queryClient?: QueryClient): UseQueryResult<NoInfer<TData>, TError>;
5
+ }, queryClient?: QueryClient): import('@tanstack/react-query').UseQueryResult<NoInfer<TData>, TError>;
@@ -1,13 +1,12 @@
1
- import { DefaultError, QueryClient, UseMutationResult } from '@tanstack/react-query';
1
+ import { DefaultError, QueryClient } from '@tanstack/react-query';
2
2
  import { UseMutation$Options } from './useMutation$';
3
- import { BehaviorSubject } from 'rxjs';
4
3
  export declare class SwitchMutationCancelError extends Error {
5
4
  constructor(message?: string);
6
5
  }
7
6
  export declare function useSwitchMutation$<TData = unknown, TError = DefaultError, TVariables = void, TOnMutateResult = unknown>({ mutationFn, onMutate, onError, onSettled, ...options }: UseMutation$Options<TData | null, TError, TVariables, TOnMutateResult>, queryClient?: QueryClient): {
8
7
  mutate: (variables: TVariables) => void;
9
8
  mutateAsync: (variables: TVariables) => Promise<TData | null>;
10
- state$: BehaviorSubject<Pick< UseMutationResult<TData | null, TError, {
9
+ state$: import('rxjs').BehaviorSubject<Pick<import('@tanstack/react-query').UseMutationResult<TData | null, TError, {
11
10
  variables: TVariables;
12
11
  abort: AbortSignal;
13
12
  }, TOnMutateResult>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
@@ -28,7 +27,7 @@ export declare function useSwitchMutation$<TData = unknown, TError = DefaultErro
28
27
  } | {
29
28
  mutate: (variables: TVariables) => void;
30
29
  mutateAsync: (variables: TVariables) => Promise<TData | null>;
31
- state$: BehaviorSubject<Pick< UseMutationResult<TData | null, TError, {
30
+ state$: import('rxjs').BehaviorSubject<Pick<import('@tanstack/react-query').UseMutationResult<TData | null, TError, {
32
31
  variables: TVariables;
33
32
  abort: AbortSignal;
34
33
  }, TOnMutateResult>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
@@ -52,7 +51,7 @@ export declare function useSwitchMutation$<TData = unknown, TError = DefaultErro
52
51
  } | {
53
52
  mutate: (variables: TVariables) => void;
54
53
  mutateAsync: (variables: TVariables) => Promise<TData | null>;
55
- state$: BehaviorSubject<Pick< UseMutationResult<TData | null, TError, {
54
+ state$: import('rxjs').BehaviorSubject<Pick<import('@tanstack/react-query').UseMutationResult<TData | null, TError, {
56
55
  variables: TVariables;
57
56
  abort: AbortSignal;
58
57
  }, TOnMutateResult>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
@@ -76,7 +75,7 @@ export declare function useSwitchMutation$<TData = unknown, TError = DefaultErro
76
75
  } | {
77
76
  mutate: (variables: TVariables) => void;
78
77
  mutateAsync: (variables: TVariables) => Promise<TData | null>;
79
- state$: BehaviorSubject<Pick< UseMutationResult<TData | null, TError, {
78
+ state$: import('rxjs').BehaviorSubject<Pick<import('@tanstack/react-query').UseMutationResult<TData | null, TError, {
80
79
  variables: TVariables;
81
80
  abort: AbortSignal;
82
81
  }, TOnMutateResult>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
@@ -1,12 +1,11 @@
1
1
  import { Adapter } from './adapters/Adapter';
2
2
  import { PersistenceEntry, SignalPersistenceConfig } from './types';
3
- import { Observable } from 'rxjs';
4
3
  export declare const getNormalizedPersistanceValue: (unknownValue: unknown) => PersistenceEntry | undefined;
5
4
  export declare const persistValue: ({ adapter, config, }: {
6
5
  adapter: Adapter;
7
6
  config: SignalPersistenceConfig<any>;
8
- }) => Observable<unknown>;
7
+ }) => import('rxjs').Observable<unknown>;
9
8
  export declare function hydrateValueToSignal({ adapter, config, }: {
10
9
  adapter: Adapter;
11
10
  config: SignalPersistenceConfig<any>;
12
- }): Observable<unknown>;
11
+ }): import('rxjs').Observable<unknown>;
@@ -1,7 +1,6 @@
1
1
  import { Signal } from '../Signal';
2
2
  import { Adapter } from './adapters/Adapter';
3
3
  import { SignalPersistenceConfig } from './types';
4
- import { Observable } from 'rxjs';
5
4
  export declare function persistSignals({ entries, onHydrated, adapter, }: {
6
5
  entries: Array<SignalPersistenceConfig<Signal<any, string>>>;
7
6
  /**
@@ -14,7 +13,7 @@ export declare function persistSignals({ entries, onHydrated, adapter, }: {
14
13
  * need to change adapter during runtime.
15
14
  */
16
15
  adapter: Adapter;
17
- }): Observable<{
16
+ }): import('rxjs').Observable<{
18
17
  type: "hydrated";
19
18
  } | {
20
19
  type: "persisted";
@@ -1,10 +1,9 @@
1
- import { VirtualSignal, Signal } from '../Signal';
1
+ import { VirtualSignal } from '../Signal';
2
2
  import { SignalContext } from '../SignalContext';
3
- import { Context, MemoExoticComponent } from 'react';
4
3
  export type SignalContextType = SignalContext;
5
- export declare const SignalReactContext: Context<SignalContext>;
6
- export declare const SignalContextProvider: MemoExoticComponent<({ children }: {
4
+ export declare const SignalReactContext: import('react').Context<SignalContext>;
5
+ export declare const SignalContextProvider: import('react').MemoExoticComponent<({ children }: {
7
6
  children: React.ReactNode;
8
7
  }) => import("react/jsx-runtime").JSX.Element>;
9
8
  export declare const useSignalContext: () => SignalContext;
10
- export declare const useMakeOrRetrieveSignal: (virtualSignal?: VirtualSignal<unknown>) => Signal<unknown, undefined> | undefined;
9
+ export declare const useMakeOrRetrieveSignal: (virtualSignal?: VirtualSignal<unknown>) => import('../Signal').Signal<unknown, undefined> | undefined;
@@ -1,6 +1,25 @@
1
1
  import { Signal, VirtualSignal } from '../Signal';
2
+ export type EqualityFn<T> = (a: T, b: T) => boolean;
3
+ /**
4
+ * Subscribe to a signal's current value, with optional projection and equality.
5
+ *
6
+ * - On every render the returned value is `selector(signal.value)` (or
7
+ * `signal.value` when no selector is provided), recomputed only when the
8
+ * signal value, the selector identity, or the signal itself has changed.
9
+ * - The component re-renders whenever the signal emits a value that the
10
+ * `equalityFn` considers different from the previous one.
11
+ * - The hook caches its last result. When the new selector output is
12
+ * considered equal to the previous one (per `equalityFn`), the previous
13
+ * reference is returned, so downstream `useEffect`/`useMemo` dependencies
14
+ * stay stable.
15
+ *
16
+ * @param signal The signal (or `VirtualSignal` resolved through context) to read.
17
+ * @param selector Optional projection of the signal value.
18
+ * @param equalityFn Optional equality function. Defaults to `Object.is`.
19
+ * Pass `isShallowEqual` (or any custom comparator) to opt into reference
20
+ * stability for derived objects.
21
+ */
2
22
  export declare function useSignalValue<T>(signal: VirtualSignal<T>): T;
3
- export declare function useSignalValue<T, SelectValue>(signal: VirtualSignal<T>, selector: (value: T) => SelectValue): SelectValue;
23
+ export declare function useSignalValue<T, SelectValue>(signal: VirtualSignal<T>, selector: (value: T) => SelectValue, equalityFn?: EqualityFn<SelectValue>): SelectValue;
4
24
  export declare function useSignalValue<T>(signal: Signal<T>): T;
5
- export declare function useSignalValue<T, SelectValue>(signal: Signal<T>, selector: (value: T) => SelectValue): SelectValue;
6
- export declare function useSignalValue<T, SelectValue>(signal: Signal<T>, selector: (value: T) => SelectValue): SelectValue | undefined;
25
+ export declare function useSignalValue<T, SelectValue>(signal: Signal<T>, selector: (value: T) => SelectValue, equalityFn?: EqualityFn<SelectValue>): SelectValue;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,2 +1 @@
1
- import { RefObject } from 'react';
2
- export declare const useLiveRef: <T>(value: T) => RefObject<T>;
1
+ export declare const useLiveRef: <T>(value: T) => import('react').RefObject<T>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "reactjrx",
3
3
  "private": false,
4
- "version": "1.135.6",
4
+ "version": "1.139.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"
@@ -39,28 +39,29 @@
39
39
  "rxjs": "*"
40
40
  },
41
41
  "devDependencies": {
42
- "@biomejs/biome": "2.3.11",
42
+ "@biomejs/biome": "2.4.15",
43
+ "@rolldown/plugin-babel": "^0.2.3",
43
44
  "@tanstack/react-query-persist-client": "^5.96.2",
44
45
  "@testing-library/jest-dom": "^6.2.0",
45
46
  "@testing-library/react": "^16.1.0",
46
- "@types/node": "^24.3.1",
47
+ "@types/node": "^25.9.1",
47
48
  "@types/react": "^19.0.2",
48
49
  "@types/react-dom": "^19.0.2",
49
- "@vitejs/plugin-react": "^5.0.2",
50
+ "@vitejs/plugin-react": "^6.0.2",
50
51
  "babel-plugin-react-compiler": "^1.0.0",
51
52
  "husky": "^9.1.7",
52
- "jsdom": "^27.4.0",
53
- "lint-staged": "^16.1.2",
53
+ "jsdom": "^29.1.1",
54
+ "lint-staged": "^17.0.5",
54
55
  "react": "^19.0.0",
55
56
  "react-dom": "^19.0.0",
56
- "rollup-plugin-node-externals": "^8.0.0",
57
+ "rollup-plugin-node-externals": "^9.0.1",
57
58
  "rxjs": "^7.8.0",
58
- "semantic-release": "^24.2.2",
59
+ "semantic-release": "^25.0.3",
59
60
  "terser": "^5.46.0",
60
- "typescript": "^5.6.2",
61
- "vite": "^7.1.4",
61
+ "typescript": "^6.0.2",
62
+ "vite": "^8.0.14",
62
63
  "vite-plugin-babel": "^1.4.1",
63
- "vite-plugin-dts": "^4.2.1",
64
+ "vite-plugin-dts": "^5.0.1",
64
65
  "vitest": "^4.0.17"
65
66
  },
66
67
  "repository": {