reactjrx 1.101.1 → 1.104.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
@@ -14,6 +14,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
14
14
  const React = require("react");
15
15
  const rxjs = require("rxjs");
16
16
  const operators = require("rxjs/operators");
17
+ const reactQuery = require("@tanstack/react-query");
17
18
  const jsxRuntime = require("react/jsx-runtime");
18
19
  function _interopNamespaceDefault(e) {
19
20
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -208,7 +209,7 @@ function signal(config = {}) {
208
209
  default: config.default,
209
210
  key: config.key
210
211
  };
211
- const { default: defaultValue } = normalizedConfig ?? {};
212
+ const { default: defaultValue } = normalizedConfig;
212
213
  const subject = new rxjs.BehaviorSubject(defaultValue);
213
214
  const setValue = (arg) => {
214
215
  const update = (value) => {
@@ -652,6 +653,90 @@ function isDefined(arg) {
652
653
  }
653
654
  const arrayEqual = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]);
654
655
  const isServer = typeof window === "undefined" || "Deno" in window;
656
+ function useQuery$(options, queryClient) {
657
+ const sub = React.useRef();
658
+ const _queryClient = reactQuery.useQueryClient(queryClient);
659
+ const queryFnAsync = (context) => {
660
+ let isResolved = false;
661
+ return new Promise((resolve, reject) => {
662
+ let lastData = void 0;
663
+ if (sub.current) {
664
+ sub.current.unsubscribe();
665
+ sub.current = void 0;
666
+ }
667
+ const unsub = _queryClient.getQueryCache().subscribe((d) => {
668
+ var _a;
669
+ if (d.type === "observerRemoved" && d.query.observers.length === 0) {
670
+ unsub();
671
+ _queryClient.cancelQueries({ queryKey: context.queryKey });
672
+ (_a = sub.current) == null ? void 0 : _a.unsubscribe();
673
+ }
674
+ });
675
+ const source = rxjs.defer(
676
+ () => typeof options.queryFn === "function" ? options.queryFn(context) : options.queryFn
677
+ );
678
+ sub.current = source.pipe(
679
+ rxjs.finalize(() => {
680
+ unsub();
681
+ isResolved = true;
682
+ })
683
+ ).subscribe({
684
+ next: (data) => {
685
+ lastData = data;
686
+ _queryClient == null ? void 0 : _queryClient.setQueryData(context.queryKey, data);
687
+ },
688
+ error: (error) => {
689
+ isResolved = true;
690
+ reject(error);
691
+ },
692
+ complete: () => {
693
+ if (lastData === void 0)
694
+ return reject(new Error("Stream completed without any data"));
695
+ if (isResolved) return;
696
+ isResolved = true;
697
+ resolve(lastData);
698
+ }
699
+ });
700
+ });
701
+ };
702
+ const result = reactQuery.useQuery(
703
+ {
704
+ ...options,
705
+ queryFn: queryFnAsync
706
+ },
707
+ queryClient
708
+ );
709
+ return result;
710
+ }
711
+ function useMutation$(options, queryClient) {
712
+ const mutationFnAsync = (variables) => {
713
+ let lastData;
714
+ return new Promise((resolve, reject) => {
715
+ const source = typeof options.mutationFn === "function" ? options.mutationFn(variables) : options.mutationFn;
716
+ source.pipe(rxjs.take(1)).subscribe({
717
+ next: (data) => {
718
+ lastData = data;
719
+ },
720
+ error: (error) => {
721
+ reject(error);
722
+ },
723
+ complete: () => {
724
+ if (lastData === void 0)
725
+ return reject(new Error("Stream completed without any data"));
726
+ resolve(lastData);
727
+ }
728
+ });
729
+ });
730
+ };
731
+ const result = reactQuery.useMutation(
732
+ {
733
+ ...options,
734
+ mutationFn: mutationFnAsync
735
+ },
736
+ queryClient
737
+ );
738
+ return result;
739
+ }
655
740
  function hasObjectPrototype(o) {
656
741
  return Object.prototype.toString.call(o) === "[object Object]";
657
742
  }
@@ -3419,11 +3504,13 @@ exports.useForeverQuery = useForeverQuery;
3419
3504
  exports.useLiveRef = useLiveRef;
3420
3505
  exports.useMount = useMount;
3421
3506
  exports.useMutation = useMutation;
3507
+ exports.useMutation$ = useMutation$;
3422
3508
  exports.useObservableState = useObservableState;
3423
3509
  exports.useObserve = useObserve;
3424
3510
  exports.useObserveCallback = useObserveCallback;
3425
3511
  exports.usePersistSignals = usePersistSignals;
3426
3512
  exports.useQuery = useQuery;
3513
+ exports.useQuery$ = useQuery$;
3427
3514
  exports.useQueryClient = useQueryClient;
3428
3515
  exports.useSignal = useSignal;
3429
3516
  exports.useSignalValue = useSignalValue;
package/dist/index.d.ts CHANGED
@@ -13,6 +13,8 @@ export * from './lib/state/persistance/adapters/createLocalStorageAdapter';
13
13
  export * from './lib/state/react/usePersistSignals';
14
14
  export { type SignalPersistenceConfig } from './lib/state/persistance/types';
15
15
  export * from './lib/utils';
16
+ export * from './lib/tmp/useQuery$';
17
+ export * from './lib/tmp/useMutation$';
16
18
  export * from './lib/queries/react/mutations/useMutation';
17
19
  export * from './lib/queries/react/queries/useQuery';
18
20
  export * from './lib/queries/react/useQueryClient';
package/dist/index.js CHANGED
@@ -11,8 +11,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
11
11
  var _trigger$, _mutationRunner, _currentMutationSubject, _visibility$, _focusedSubject, _client, _currentQuery, _fetchSubject, _currentQueryInitialState, _lastResult, _lastQueryWithDefinedData, _observers, _observerCount, _cancelSubject, _executeSubject, _store, _defaultOptions, _initialState, _notifySubject, _store2, _mutationCache, _queryCache, _mutationDefaults, _queryDefaults, _defaultOptions2;
12
12
  import * as React from "react";
13
13
  import { useRef, useMemo, useCallback, useSyncExternalStore, useEffect, useState, createContext, memo, useContext } from "react";
14
- import { isObservable, from, of, defer, startWith, identity, distinctUntilChanged, tap, catchError, EMPTY, Subject, BehaviorSubject, skip, first, map, switchMap, zip, share, merge, throttleTime, asyncScheduler, concatMap, scan, throwError, timer, Observable, takeWhile, filter, last, mergeMap as mergeMap$1, takeUntil, shareReplay, ignoreElements, fromEvent, noop as noop$1, pairwise, NEVER, delay, interval, withLatestFrom, retry, iif, isEmpty, concat, toArray, take, combineLatest, endWith, lastValueFrom } from "rxjs";
14
+ import { isObservable, from, of, defer, startWith, identity, distinctUntilChanged, tap, catchError, EMPTY, Subject, BehaviorSubject, skip, first, map, switchMap, zip, share, merge, throttleTime, asyncScheduler, concatMap, scan, throwError, timer, finalize, take, Observable, takeWhile, filter, last, mergeMap as mergeMap$1, takeUntil, shareReplay, ignoreElements, fromEvent, noop as noop$1, pairwise, NEVER, delay, interval, withLatestFrom, retry, iif, isEmpty, concat, toArray, combineLatest, endWith, lastValueFrom } from "rxjs";
15
15
  import { catchError as catchError$1, mergeMap, retryWhen, concatMap as concatMap$1, first as first$1, tap as tap$1 } from "rxjs/operators";
16
+ import { useQueryClient as useQueryClient$1, useQuery as useQuery$1, useMutation as useMutation$1 } from "@tanstack/react-query";
16
17
  import { jsxs, jsx } from "react/jsx-runtime";
17
18
  const useLiveRef = (value) => {
18
19
  const ref = useRef(value);
@@ -190,7 +191,7 @@ function signal(config = {}) {
190
191
  default: config.default,
191
192
  key: config.key
192
193
  };
193
- const { default: defaultValue } = normalizedConfig ?? {};
194
+ const { default: defaultValue } = normalizedConfig;
194
195
  const subject = new BehaviorSubject(defaultValue);
195
196
  const setValue = (arg) => {
196
197
  const update = (value) => {
@@ -634,6 +635,90 @@ function isDefined(arg) {
634
635
  }
635
636
  const arrayEqual = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]);
636
637
  const isServer = typeof window === "undefined" || "Deno" in window;
638
+ function useQuery$(options, queryClient) {
639
+ const sub = useRef();
640
+ const _queryClient = useQueryClient$1(queryClient);
641
+ const queryFnAsync = (context) => {
642
+ let isResolved = false;
643
+ return new Promise((resolve, reject) => {
644
+ let lastData = void 0;
645
+ if (sub.current) {
646
+ sub.current.unsubscribe();
647
+ sub.current = void 0;
648
+ }
649
+ const unsub = _queryClient.getQueryCache().subscribe((d) => {
650
+ var _a;
651
+ if (d.type === "observerRemoved" && d.query.observers.length === 0) {
652
+ unsub();
653
+ _queryClient.cancelQueries({ queryKey: context.queryKey });
654
+ (_a = sub.current) == null ? void 0 : _a.unsubscribe();
655
+ }
656
+ });
657
+ const source = defer(
658
+ () => typeof options.queryFn === "function" ? options.queryFn(context) : options.queryFn
659
+ );
660
+ sub.current = source.pipe(
661
+ finalize(() => {
662
+ unsub();
663
+ isResolved = true;
664
+ })
665
+ ).subscribe({
666
+ next: (data) => {
667
+ lastData = data;
668
+ _queryClient == null ? void 0 : _queryClient.setQueryData(context.queryKey, data);
669
+ },
670
+ error: (error) => {
671
+ isResolved = true;
672
+ reject(error);
673
+ },
674
+ complete: () => {
675
+ if (lastData === void 0)
676
+ return reject(new Error("Stream completed without any data"));
677
+ if (isResolved) return;
678
+ isResolved = true;
679
+ resolve(lastData);
680
+ }
681
+ });
682
+ });
683
+ };
684
+ const result = useQuery$1(
685
+ {
686
+ ...options,
687
+ queryFn: queryFnAsync
688
+ },
689
+ queryClient
690
+ );
691
+ return result;
692
+ }
693
+ function useMutation$(options, queryClient) {
694
+ const mutationFnAsync = (variables) => {
695
+ let lastData;
696
+ return new Promise((resolve, reject) => {
697
+ const source = typeof options.mutationFn === "function" ? options.mutationFn(variables) : options.mutationFn;
698
+ source.pipe(take(1)).subscribe({
699
+ next: (data) => {
700
+ lastData = data;
701
+ },
702
+ error: (error) => {
703
+ reject(error);
704
+ },
705
+ complete: () => {
706
+ if (lastData === void 0)
707
+ return reject(new Error("Stream completed without any data"));
708
+ resolve(lastData);
709
+ }
710
+ });
711
+ });
712
+ };
713
+ const result = useMutation$1(
714
+ {
715
+ ...options,
716
+ mutationFn: mutationFnAsync
717
+ },
718
+ queryClient
719
+ );
720
+ return result;
721
+ }
637
722
  function hasObjectPrototype(o) {
638
723
  return Object.prototype.toString.call(o) === "[object Object]";
639
724
  }
@@ -3402,11 +3487,13 @@ export {
3402
3487
  useLiveRef,
3403
3488
  useMount,
3404
3489
  useMutation,
3490
+ useMutation$,
3405
3491
  useObservableState,
3406
3492
  useObserve,
3407
3493
  useObserveCallback,
3408
3494
  usePersistSignals,
3409
3495
  useQuery,
3496
+ useQuery$,
3410
3497
  useQueryClient,
3411
3498
  useSignal,
3412
3499
  useSignalValue,
@@ -9,18 +9,18 @@ export declare function createLogger(env: string): {
9
9
  namespace(name: string, style?: {
10
10
  backgroundColor: string;
11
11
  color: string;
12
- }): any;
12
+ }): /*elided*/ any;
13
13
  printNamespaces(): {
14
14
  namespaces: string;
15
15
  styles: string[];
16
16
  };
17
- print(method: "log" | "warn" | "error" | "group", ...message: any[]): any;
18
- printWithoutNamespace(method: "log" | "warn" | "error" | "group", ...message: any[]): any;
19
- log(...message: any): any;
20
- warn(...message: any): any;
21
- error(...message: any): any;
22
- group(...message: any): any;
23
- groupEnd(): any;
17
+ print(method: "log" | "warn" | "error" | "group", ...message: any[]): /*elided*/ any;
18
+ printWithoutNamespace(method: "log" | "warn" | "error" | "group", ...message: any[]): /*elided*/ any;
19
+ log(...message: any): /*elided*/ any;
20
+ warn(...message: any): /*elided*/ any;
21
+ error(...message: any): /*elided*/ any;
22
+ group(...message: any): /*elided*/ any;
23
+ groupEnd(): /*elided*/ any;
24
24
  };
25
25
  export declare const Logger: {
26
26
  namespaces: {
@@ -33,16 +33,16 @@ export declare const Logger: {
33
33
  namespace(name: string, style?: {
34
34
  backgroundColor: string;
35
35
  color: string;
36
- }): any;
36
+ }): /*elided*/ any;
37
37
  printNamespaces(): {
38
38
  namespaces: string;
39
39
  styles: string[];
40
40
  };
41
- print(method: "log" | "warn" | "error" | "group", ...message: any[]): any;
42
- printWithoutNamespace(method: "log" | "warn" | "error" | "group", ...message: any[]): any;
43
- log(...message: any): any;
44
- warn(...message: any): any;
45
- error(...message: any): any;
46
- group(...message: any): any;
47
- groupEnd(): any;
41
+ print(method: "log" | "warn" | "error" | "group", ...message: any[]): /*elided*/ any;
42
+ printWithoutNamespace(method: "log" | "warn" | "error" | "group", ...message: any[]): /*elided*/ any;
43
+ log(...message: any): /*elided*/ any;
44
+ warn(...message: any): /*elided*/ any;
45
+ error(...message: any): /*elided*/ any;
46
+ group(...message: any): /*elided*/ any;
47
+ groupEnd(): /*elided*/ any;
48
48
  };
@@ -1,4 +1,5 @@
1
1
  import { MutationOptions, MutationState } from './types';
2
+ import { DefaultError } from '../../types';
2
3
  export declare const executeMutation: <TData = unknown, TError = Error, TVariables = void, TContext = unknown>({ variables, state, options }: {
3
4
  variables: TVariables;
4
5
  state: MutationState<TData, TError, TVariables, TContext>;
@@ -1,2 +1,3 @@
1
+ import { DefaultError } from '../../types';
1
2
  import { MutationFilters } from '../types';
2
3
  export declare const createPredicateForFilters: <TData = unknown, TError = Error, TVariables = any, TContext = unknown>({ mutationKey, status, predicate, exact }?: MutationFilters<TData, TError, TVariables, TContext>) => (mutation: import('../mutation/Mutation').Mutation<TData, TError, TVariables, TContext>) => boolean;
@@ -1,5 +1,6 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { QueryKey } from '../../../keys/types';
3
+ import { DefaultError } from '../../../types';
3
4
  import { QueryState } from '../types';
4
5
  import { QueryOptions } from '../../types';
5
6
  export declare const executeQuery: <TQueryFnData = unknown, TError = Error, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: QueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
@@ -1,3 +1,4 @@
1
+ import { DefaultError } from '../../types';
1
2
  import { Observable } from 'rxjs';
2
3
  import { QueryOptions } from '../types';
3
4
  import { QueryState } from './types';
@@ -1,4 +1,5 @@
1
1
  import { Observable } from 'rxjs';
2
+ import { DefaultError } from '../../../types';
2
3
  import { QueryState } from '../types';
3
4
  export declare const whenNewData: <TQueryFnData = unknown, TError = Error, TData = TQueryFnData>(source: Observable<Partial<QueryState<TData, TError>>>) => Observable<{
4
5
  data: TData | undefined;
@@ -0,0 +1,5 @@
1
+ import { DefaultError, QueryClient, UseMutationOptions } from '@tanstack/react-query';
2
+ import { Observable } from 'rxjs';
3
+ export declare function useMutation$<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown>(options: Omit<UseMutationOptions<TData, TError, TVariables, TContext>, "mutationFn"> & {
4
+ mutationFn: ((variables: TVariables) => Observable<TData>) | Observable<TData>;
5
+ }, queryClient?: QueryClient): import('@tanstack/react-query').UseMutationResult<TData, TError, TVariables, TContext>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { DefaultError, QueryClient, QueryFunctionContext, QueryKey, UseQueryOptions } from '@tanstack/react-query';
2
+ import { Observable } from 'rxjs';
3
+ export declare function useQuery$<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: Omit<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, "queryFn"> & {
4
+ queryFn: ((context: QueryFunctionContext<TQueryKey>) => Observable<TQueryFnData>) | Observable<TQueryFnData>;
5
+ }, queryClient?: QueryClient): import('@tanstack/react-query').UseQueryResult<TData, TError>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "reactjrx",
3
3
  "private": false,
4
- "version": "1.101.1",
4
+ "version": "1.104.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"
@@ -14,9 +14,6 @@
14
14
  "require": "./dist/index.umd.cjs"
15
15
  }
16
16
  },
17
- "engines": {
18
- "node": "20"
19
- },
20
17
  "types": "./dist/index.d.ts",
21
18
  "publishConfig": {
22
19
  "access": "public"
@@ -37,10 +34,10 @@
37
34
  "peerDependencies": {
38
35
  "react": "18",
39
36
  "react-dom": "18",
40
- "rxjs": "*"
37
+ "rxjs": "*",
38
+ "@tanstack/react-query": "^5.8.4"
41
39
  },
42
40
  "devDependencies": {
43
- "@tanstack/react-query": "^5.8.4",
44
41
  "@testing-library/jest-dom": "^6.2.0",
45
42
  "@testing-library/react": "^16.0.0",
46
43
  "@types/node": "^20.0.0",