reactjrx 1.105.1 → 1.106.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/dist/index.cjs CHANGED
@@ -71,6 +71,9 @@ function useObserve(source$, optionsOrDeps, maybeDeps) {
71
71
  );
72
72
  const sourceRef = useLiveRef(source$);
73
73
  const optionsRef = useLiveRef(options);
74
+ const getSnapshot = React.useCallback(() => {
75
+ return valueRef.current;
76
+ }, []);
74
77
  const subscribe = React.useCallback(
75
78
  (next) => {
76
79
  const source = sourceRef.current;
@@ -100,10 +103,7 @@ function useObserve(source$, optionsOrDeps, maybeDeps) {
100
103
  // eslint-disable-next-line react-hooks/exhaustive-deps
101
104
  [...deps]
102
105
  );
103
- const getSnapshot = React.useCallback(() => {
104
- return valueRef.current;
105
- }, []);
106
- const result = React.useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
106
+ const result = React.useSyncExternalStore(subscribe, getSnapshot);
107
107
  return result;
108
108
  }
109
109
  function useSubscribe(source, deps = []) {
@@ -709,6 +709,13 @@ function useQuery$(options, queryClient) {
709
709
  return result;
710
710
  }
711
711
  function useMutation$(options, queryClient) {
712
+ const stateSubject = useBehaviorSubject({
713
+ status: "idle",
714
+ isPending: false,
715
+ isError: false,
716
+ isSuccess: false,
717
+ isIdle: true
718
+ });
712
719
  const mutationFnAsync = (variables) => {
713
720
  let lastData;
714
721
  return new Promise((resolve, reject) => {
@@ -735,7 +742,11 @@ function useMutation$(options, queryClient) {
735
742
  },
736
743
  queryClient
737
744
  );
738
- return result;
745
+ const { status, isPending, isError, isSuccess, isIdle } = result;
746
+ React.useEffect(() => {
747
+ stateSubject.current.next({ status, isPending, isError, isSuccess, isIdle });
748
+ }, [status, isPending, isError, isSuccess, isIdle, stateSubject]);
749
+ return { ...result, state$: stateSubject.current };
739
750
  }
740
751
  function hasObjectPrototype(o) {
741
752
  return Object.prototype.toString.call(o) === "[object Object]";
package/dist/index.js CHANGED
@@ -53,6 +53,9 @@ function useObserve(source$, optionsOrDeps, maybeDeps) {
53
53
  );
54
54
  const sourceRef = useLiveRef(source$);
55
55
  const optionsRef = useLiveRef(options);
56
+ const getSnapshot = useCallback(() => {
57
+ return valueRef.current;
58
+ }, []);
56
59
  const subscribe = useCallback(
57
60
  (next) => {
58
61
  const source = sourceRef.current;
@@ -82,10 +85,7 @@ function useObserve(source$, optionsOrDeps, maybeDeps) {
82
85
  // eslint-disable-next-line react-hooks/exhaustive-deps
83
86
  [...deps]
84
87
  );
85
- const getSnapshot = useCallback(() => {
86
- return valueRef.current;
87
- }, []);
88
- const result = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
88
+ const result = useSyncExternalStore(subscribe, getSnapshot);
89
89
  return result;
90
90
  }
91
91
  function useSubscribe(source, deps = []) {
@@ -691,6 +691,13 @@ function useQuery$(options, queryClient) {
691
691
  return result;
692
692
  }
693
693
  function useMutation$(options, queryClient) {
694
+ const stateSubject = useBehaviorSubject({
695
+ status: "idle",
696
+ isPending: false,
697
+ isError: false,
698
+ isSuccess: false,
699
+ isIdle: true
700
+ });
694
701
  const mutationFnAsync = (variables) => {
695
702
  let lastData;
696
703
  return new Promise((resolve, reject) => {
@@ -717,7 +724,11 @@ function useMutation$(options, queryClient) {
717
724
  },
718
725
  queryClient
719
726
  );
720
- return result;
727
+ const { status, isPending, isError, isSuccess, isIdle } = result;
728
+ useEffect(() => {
729
+ stateSubject.current.next({ status, isPending, isError, isSuccess, isIdle });
730
+ }, [status, isPending, isError, isSuccess, isIdle, stateSubject]);
731
+ return { ...result, state$: stateSubject.current };
721
732
  }
722
733
  function hasObjectPrototype(o) {
723
734
  return Object.prototype.toString.call(o) === "[object Object]";
@@ -1,5 +1,77 @@
1
- import { DefaultError, QueryClient, UseMutationOptions } from '@tanstack/react-query';
1
+ import { DefaultError, QueryClient, UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
2
2
  import { Observable } from 'rxjs';
3
3
  export declare function useMutation$<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown>(options: Omit<UseMutationOptions<TData, TError, TVariables, TContext>, "mutationFn"> & {
4
4
  mutationFn: ((variables: TVariables) => Observable<TData>) | Observable<TData>;
5
- }, queryClient?: QueryClient): import('@tanstack/react-query').UseMutationResult<TData, TError, TVariables, TContext>;
5
+ }, queryClient?: QueryClient): {
6
+ state$: import('rxjs').BehaviorSubject<Pick<UseMutationResult<TData, TError, TVariables, TContext>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
7
+ data: undefined;
8
+ variables: undefined;
9
+ error: null;
10
+ isError: false;
11
+ isIdle: true;
12
+ isPending: false;
13
+ isSuccess: false;
14
+ status: "idle";
15
+ mutate: import('@tanstack/react-query').UseMutateFunction<TData, TError, TVariables, TContext>;
16
+ reset: () => void;
17
+ context: TContext | undefined;
18
+ failureCount: number;
19
+ failureReason: TError | null;
20
+ isPaused: boolean;
21
+ submittedAt: number;
22
+ mutateAsync: import('@tanstack/react-query').UseMutateAsyncFunction<TData, TError, TVariables, TContext>;
23
+ } | {
24
+ state$: import('rxjs').BehaviorSubject<Pick<UseMutationResult<TData, TError, TVariables, TContext>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
25
+ data: undefined;
26
+ variables: TVariables;
27
+ error: null;
28
+ isError: false;
29
+ isIdle: false;
30
+ isPending: true;
31
+ isSuccess: false;
32
+ status: "pending";
33
+ mutate: import('@tanstack/react-query').UseMutateFunction<TData, TError, TVariables, TContext>;
34
+ reset: () => void;
35
+ context: TContext | undefined;
36
+ failureCount: number;
37
+ failureReason: TError | null;
38
+ isPaused: boolean;
39
+ submittedAt: number;
40
+ mutateAsync: import('@tanstack/react-query').UseMutateAsyncFunction<TData, TError, TVariables, TContext>;
41
+ } | {
42
+ state$: import('rxjs').BehaviorSubject<Pick<UseMutationResult<TData, TError, TVariables, TContext>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
43
+ data: undefined;
44
+ error: TError;
45
+ variables: TVariables;
46
+ isError: true;
47
+ isIdle: false;
48
+ isPending: false;
49
+ isSuccess: false;
50
+ status: "error";
51
+ mutate: import('@tanstack/react-query').UseMutateFunction<TData, TError, TVariables, TContext>;
52
+ reset: () => void;
53
+ context: TContext | undefined;
54
+ failureCount: number;
55
+ failureReason: TError | null;
56
+ isPaused: boolean;
57
+ submittedAt: number;
58
+ mutateAsync: import('@tanstack/react-query').UseMutateAsyncFunction<TData, TError, TVariables, TContext>;
59
+ } | {
60
+ state$: import('rxjs').BehaviorSubject<Pick<UseMutationResult<TData, TError, TVariables, TContext>, "status" | "isPending" | "isError" | "isSuccess" | "isIdle">>;
61
+ data: TData;
62
+ error: null;
63
+ variables: TVariables;
64
+ isError: false;
65
+ isIdle: false;
66
+ isPending: false;
67
+ isSuccess: true;
68
+ status: "success";
69
+ mutate: import('@tanstack/react-query').UseMutateFunction<TData, TError, TVariables, TContext>;
70
+ reset: () => void;
71
+ context: TContext | undefined;
72
+ failureCount: number;
73
+ failureReason: TError | null;
74
+ isPaused: boolean;
75
+ submittedAt: number;
76
+ mutateAsync: import('@tanstack/react-query').UseMutateAsyncFunction<TData, TError, TVariables, TContext>;
77
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "reactjrx",
3
3
  "private": false,
4
- "version": "1.105.1",
4
+ "version": "1.106.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"