reactjrx 1.105.1 → 1.107.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 = []) {
@@ -161,9 +161,8 @@ const useSubject = ({
161
161
  }, [completeOnUnmountRef, onBeforeCompleteRef, subject]);
162
162
  return subject;
163
163
  };
164
- const useObserveCallback = () => {
164
+ const useObservableCallback = () => {
165
165
  const subject = useSubject();
166
- const event$ = useLiveRef(subject.current.asObservable());
167
166
  const trigger = React.useCallback(
168
167
  (arg) => {
169
168
  subject.current.next(arg);
@@ -171,7 +170,7 @@ const useObserveCallback = () => {
171
170
  // eslint-disable-next-line react-hooks/exhaustive-deps
172
171
  []
173
172
  );
174
- return [event$.current, trigger];
173
+ return [subject.current, trigger];
175
174
  };
176
175
  const useBehaviorSubject = (state) => {
177
176
  const subject = useConstant(() => new rxjs.BehaviorSubject(state));
@@ -709,13 +708,20 @@ function useQuery$(options, queryClient) {
709
708
  return result;
710
709
  }
711
710
  function useMutation$(options, queryClient) {
711
+ const stateSubject = useBehaviorSubject({
712
+ status: "idle",
713
+ isPending: false,
714
+ isError: false,
715
+ isSuccess: false,
716
+ isIdle: true
717
+ });
712
718
  const mutationFnAsync = (variables) => {
713
719
  let lastData;
714
720
  return new Promise((resolve, reject) => {
715
721
  const source = typeof options.mutationFn === "function" ? options.mutationFn(variables) : options.mutationFn;
716
722
  source.pipe(rxjs.take(1)).subscribe({
717
723
  next: (data) => {
718
- lastData = data;
724
+ lastData = { value: data };
719
725
  },
720
726
  error: (error) => {
721
727
  reject(error);
@@ -723,7 +729,7 @@ function useMutation$(options, queryClient) {
723
729
  complete: () => {
724
730
  if (lastData === void 0)
725
731
  return reject(new Error("Stream completed without any data"));
726
- resolve(lastData);
732
+ resolve(lastData.value);
727
733
  }
728
734
  });
729
735
  });
@@ -735,7 +741,11 @@ function useMutation$(options, queryClient) {
735
741
  },
736
742
  queryClient
737
743
  );
738
- return result;
744
+ const { status, isPending, isError, isSuccess, isIdle } = result;
745
+ React.useEffect(() => {
746
+ stateSubject.current.next({ status, isPending, isError, isSuccess, isIdle });
747
+ }, [status, isPending, isError, isSuccess, isIdle, stateSubject]);
748
+ return { ...result, state$: stateSubject.current };
739
749
  }
740
750
  function hasObjectPrototype(o) {
741
751
  return Object.prototype.toString.call(o) === "[object Object]";
@@ -3506,9 +3516,9 @@ exports.useLiveRef = useLiveRef;
3506
3516
  exports.useMount = useMount;
3507
3517
  exports.useMutation = useMutation;
3508
3518
  exports.useMutation$ = useMutation$;
3519
+ exports.useObservableCallback = useObservableCallback;
3509
3520
  exports.useObservableState = useObservableState;
3510
3521
  exports.useObserve = useObserve;
3511
- exports.useObserveCallback = useObserveCallback;
3512
3522
  exports.usePersistSignals = usePersistSignals;
3513
3523
  exports.useQuery = useQuery;
3514
3524
  exports.useQuery$ = useQuery$;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from './lib/binding/useObserve';
2
2
  export * from './lib/binding/useSubscribe';
3
- export * from './lib/binding/useObservableEvent';
3
+ export * from './lib/binding/useObservableCallback';
4
4
  export * from './lib/binding/useObservableState';
5
5
  export * from './lib/binding/useSubject';
6
6
  export * from './lib/binding/useBehaviorSubject';
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 = []) {
@@ -143,9 +143,8 @@ const useSubject = ({
143
143
  }, [completeOnUnmountRef, onBeforeCompleteRef, subject]);
144
144
  return subject;
145
145
  };
146
- const useObserveCallback = () => {
146
+ const useObservableCallback = () => {
147
147
  const subject = useSubject();
148
- const event$ = useLiveRef(subject.current.asObservable());
149
148
  const trigger = useCallback(
150
149
  (arg) => {
151
150
  subject.current.next(arg);
@@ -153,7 +152,7 @@ const useObserveCallback = () => {
153
152
  // eslint-disable-next-line react-hooks/exhaustive-deps
154
153
  []
155
154
  );
156
- return [event$.current, trigger];
155
+ return [subject.current, trigger];
157
156
  };
158
157
  const useBehaviorSubject = (state) => {
159
158
  const subject = useConstant(() => new BehaviorSubject(state));
@@ -691,13 +690,20 @@ function useQuery$(options, queryClient) {
691
690
  return result;
692
691
  }
693
692
  function useMutation$(options, queryClient) {
693
+ const stateSubject = useBehaviorSubject({
694
+ status: "idle",
695
+ isPending: false,
696
+ isError: false,
697
+ isSuccess: false,
698
+ isIdle: true
699
+ });
694
700
  const mutationFnAsync = (variables) => {
695
701
  let lastData;
696
702
  return new Promise((resolve, reject) => {
697
703
  const source = typeof options.mutationFn === "function" ? options.mutationFn(variables) : options.mutationFn;
698
704
  source.pipe(take(1)).subscribe({
699
705
  next: (data) => {
700
- lastData = data;
706
+ lastData = { value: data };
701
707
  },
702
708
  error: (error) => {
703
709
  reject(error);
@@ -705,7 +711,7 @@ function useMutation$(options, queryClient) {
705
711
  complete: () => {
706
712
  if (lastData === void 0)
707
713
  return reject(new Error("Stream completed without any data"));
708
- resolve(lastData);
714
+ resolve(lastData.value);
709
715
  }
710
716
  });
711
717
  });
@@ -717,7 +723,11 @@ function useMutation$(options, queryClient) {
717
723
  },
718
724
  queryClient
719
725
  );
720
- return result;
726
+ const { status, isPending, isError, isSuccess, isIdle } = result;
727
+ useEffect(() => {
728
+ stateSubject.current.next({ status, isPending, isError, isSuccess, isIdle });
729
+ }, [status, isPending, isError, isSuccess, isIdle, stateSubject]);
730
+ return { ...result, state$: stateSubject.current };
721
731
  }
722
732
  function hasObjectPrototype(o) {
723
733
  return Object.prototype.toString.call(o) === "[object Object]";
@@ -3489,9 +3499,9 @@ export {
3489
3499
  useMount,
3490
3500
  useMutation,
3491
3501
  useMutation$,
3502
+ useObservableCallback,
3492
3503
  useObservableState,
3493
3504
  useObserve,
3494
- useObserveCallback,
3495
3505
  usePersistSignals,
3496
3506
  useQuery,
3497
3507
  useQuery$,
@@ -0,0 +1,5 @@
1
+ import { Observable } from 'rxjs';
2
+ /**
3
+ * This creates an event handler and an observable that represents calls to that handler.
4
+ */
5
+ export declare const useObservableCallback: <T = void>() => readonly [Observable<T>, (arg: T) => void];
@@ -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.107.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"
@@ -1,4 +0,0 @@
1
- /**
2
- * This creates an event handler and an observable that represents calls to that handler.
3
- */
4
- export declare const useObserveCallback: <T = void>() => readonly [import('rxjs').Observable<T>, (arg: T) => void];