floppy-disk 2.11.1-experimental.1 → 2.11.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.
@@ -1,5 +1,5 @@
1
- import React, { ReactNode } from 'react';
1
+ import { ReactNode } from 'react';
2
2
  export declare const withContext: <T>(initFn: () => T) => readonly [({ children, onInitialize, }: {
3
3
  children: ReactNode;
4
4
  onInitialize?: ((value: T) => void) | undefined;
5
- }) => React.JSX.Element, () => T | null];
5
+ }) => import("react").FunctionComponentElement<import("react").ProviderProps<T | null>>, () => T | null];
@@ -1,4 +1,4 @@
1
- import React, { createContext, useContext, useState } from 'react';
1
+ import { createContext, createElement, useContext, useState } from 'react';
2
2
  export const withContext = (initFn) => {
3
3
  const Context = createContext(null);
4
4
  const Provider = ({ children, onInitialize, }) => {
@@ -7,7 +7,7 @@ export const withContext = (initFn) => {
7
7
  onInitialize && onInitialize(store);
8
8
  return store;
9
9
  });
10
- return React.createElement(Context.Provider, { value: value }, children);
10
+ return createElement(Context.Provider, { value, children });
11
11
  };
12
12
  const useCurrentContext = () => useContext(Context);
13
13
  return [Provider, useCurrentContext];
@@ -1,5 +1,5 @@
1
- import React, { ReactNode } from 'react';
1
+ import { ReactNode } from 'react';
2
2
  export declare const withContext: <T>(initFn: () => T) => readonly [({ children, onInitialize, }: {
3
3
  children: ReactNode;
4
4
  onInitialize?: ((value: T) => void) | undefined;
5
- }) => React.JSX.Element, () => T | null];
5
+ }) => import("react").FunctionComponentElement<import("react").ProviderProps<T | null>>, () => T | null];
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.withContext = void 0;
4
- const tslib_1 = require("tslib");
5
- const react_1 = tslib_1.__importStar(require("react"));
4
+ const react_1 = require("react");
6
5
  const withContext = (initFn) => {
7
6
  const Context = (0, react_1.createContext)(null);
8
7
  const Provider = ({ children, onInitialize, }) => {
@@ -11,7 +10,7 @@ const withContext = (initFn) => {
11
10
  onInitialize && onInitialize(store);
12
11
  return store;
13
12
  });
14
- return react_1.default.createElement(Context.Provider, { value: value }, children);
13
+ return (0, react_1.createElement)(Context.Provider, { value, children });
15
14
  };
16
15
  const useCurrentContext = () => (0, react_1.useContext)(Context);
17
16
  return [Provider, useCurrentContext];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "floppy-disk",
3
- "version": "2.11.1-experimental.1",
3
+ "version": "2.11.1",
4
4
  "description": "FloppyDisk - lightweight, simple, and powerful state management library",
5
5
  "keywords": [
6
6
  "state",
@@ -41,15 +41,6 @@
41
41
  },
42
42
  "module": "./esm/index.js",
43
43
  "default": "./lib/index.js"
44
- },
45
- "./preact": {
46
- "types": "./lib/preact/index.d.ts",
47
- "import": {
48
- "types": "./esm/preact/index.d.ts",
49
- "default": "./esm/preact/index.js"
50
- },
51
- "module": "./esm/preact/index.js",
52
- "default": "./lib/preact/index.js"
53
44
  }
54
45
  },
55
46
  "scripts": {
@@ -1,167 +0,0 @@
1
- import { Maybe } from '../utils';
2
- import { SelectDeps } from '../vanilla';
3
- import { CreateQueryOptions, QueryState } from './create-query';
4
- import { StoreKey } from './create-stores';
5
- export declare const createBiDirectionQuery: <TKey extends StoreKey = StoreKey, TResponse = any, TData extends any[] = any[], TError = unknown, TPageParam = any>(queryFn: (key: TKey, state: QueryState<TKey, TResponse, TData, TError, TPageParam>, direction: 'prev' | 'next') => Promise<TResponse>, options: Omit<CreateQueryOptions<TKey, TResponse, TData, TError, TPageParam>, "select" | "getNextPageParam"> & {
6
- getPrevPageParam: (lastPage: TResponse, index: number, stateBeforeCallQuery: QueryState<TKey, TResponse, TData, TError, TPageParam>) => Maybe<TPageParam>;
7
- getNextPageParam: (lastPage: TResponse, index: number, stateBeforeCallQuery: QueryState<TKey, TResponse, TData, TError, TPageParam>) => Maybe<TPageParam>;
8
- select: (response: TResponse, state: Pick<QueryState<TKey, TResponse, TData, TError, TPageParam>, "data" | "key">, direction: 'prev' | 'next') => TData;
9
- }) => {
10
- (...args: [Maybe<TKey>, SelectDeps<QueryState<TKey, TResponse, TData, TError, TPageParam>>?] | [SelectDeps<QueryState<TKey, TResponse, TData, TError, TPageParam>>?]): {
11
- data: (never[] | TData)[number][];
12
- fetchPrevPage: () => Promise<QueryState<TKey, TResponse, TData, TError, TPageParam>>;
13
- hasPrevPage: boolean;
14
- isWaitingPrevPage: boolean;
15
- key: TKey;
16
- keyHash: string;
17
- fetch: () => void;
18
- forceFetch: () => Promise<QueryState<TKey, TResponse, TData, TError, TPageParam>>;
19
- fetchNextPage: () => Promise<QueryState<TKey, TResponse, TData, TError, TPageParam>>;
20
- reset: () => void;
21
- optimisticUpdate: (response: TResponse | ((prevState: QueryState<TKey, TResponse, TData, TError, TPageParam>) => TResponse)) => {
22
- revert: () => void;
23
- invalidate: () => void;
24
- };
25
- isWaiting: boolean;
26
- isWaitingNextPage: boolean;
27
- isRefetching: boolean;
28
- isRefetchError: boolean;
29
- isPreviousData: boolean;
30
- isOptimisticData: boolean;
31
- error: TError | undefined;
32
- errorUpdatedAt: number | undefined;
33
- retryCount: number;
34
- isGoingToRetry: boolean;
35
- pageParam: Maybe<TPageParam>;
36
- pageParams: Maybe<TPageParam>[];
37
- hasNextPage: boolean;
38
- retryNextPageCount: number;
39
- isGoingToRetryNextPage: boolean;
40
- status: "loading";
41
- isLoading: true;
42
- isSuccess: false;
43
- isError: false;
44
- response: undefined;
45
- responseUpdatedAt: undefined;
46
- } | {
47
- data: (never[] | TData)[number][];
48
- fetchPrevPage: () => Promise<QueryState<TKey, TResponse, TData, TError, TPageParam>>;
49
- hasPrevPage: boolean;
50
- isWaitingPrevPage: boolean;
51
- key: TKey;
52
- keyHash: string;
53
- fetch: () => void;
54
- forceFetch: () => Promise<QueryState<TKey, TResponse, TData, TError, TPageParam>>;
55
- fetchNextPage: () => Promise<QueryState<TKey, TResponse, TData, TError, TPageParam>>;
56
- reset: () => void;
57
- optimisticUpdate: (response: TResponse | ((prevState: QueryState<TKey, TResponse, TData, TError, TPageParam>) => TResponse)) => {
58
- revert: () => void;
59
- invalidate: () => void;
60
- };
61
- isWaiting: boolean;
62
- isWaitingNextPage: boolean;
63
- isRefetching: boolean;
64
- isRefetchError: boolean;
65
- isPreviousData: boolean;
66
- isOptimisticData: boolean;
67
- error: TError | undefined;
68
- errorUpdatedAt: number | undefined;
69
- retryCount: number;
70
- isGoingToRetry: boolean;
71
- pageParam: Maybe<TPageParam>;
72
- pageParams: Maybe<TPageParam>[];
73
- hasNextPage: boolean;
74
- retryNextPageCount: number;
75
- isGoingToRetryNextPage: boolean;
76
- status: "error";
77
- isLoading: false;
78
- isSuccess: false;
79
- isError: true;
80
- response: undefined;
81
- responseUpdatedAt: undefined;
82
- } | {
83
- data: (never[] | TData)[number][];
84
- fetchPrevPage: () => Promise<QueryState<TKey, TResponse, TData, TError, TPageParam>>;
85
- hasPrevPage: boolean;
86
- isWaitingPrevPage: boolean;
87
- key: TKey;
88
- keyHash: string;
89
- fetch: () => void;
90
- forceFetch: () => Promise<QueryState<TKey, TResponse, TData, TError, TPageParam>>;
91
- fetchNextPage: () => Promise<QueryState<TKey, TResponse, TData, TError, TPageParam>>;
92
- reset: () => void;
93
- optimisticUpdate: (response: TResponse | ((prevState: QueryState<TKey, TResponse, TData, TError, TPageParam>) => TResponse)) => {
94
- revert: () => void;
95
- invalidate: () => void;
96
- };
97
- isWaiting: boolean;
98
- isWaitingNextPage: boolean;
99
- isRefetching: boolean;
100
- isRefetchError: boolean;
101
- isPreviousData: boolean;
102
- isOptimisticData: boolean;
103
- error: TError | undefined;
104
- errorUpdatedAt: number | undefined;
105
- retryCount: number;
106
- isGoingToRetry: boolean;
107
- pageParam: Maybe<TPageParam>;
108
- pageParams: Maybe<TPageParam>[];
109
- hasNextPage: boolean;
110
- retryNextPageCount: number;
111
- isGoingToRetryNextPage: boolean;
112
- status: "success";
113
- isLoading: false;
114
- isSuccess: true;
115
- isError: false;
116
- response: TResponse;
117
- responseUpdatedAt: number | undefined;
118
- };
119
- get(): {
120
- prev: QueryState<TKey, TResponse, TData, TError, TPageParam>;
121
- next: QueryState<TKey, TResponse, TData, TError, TPageParam>;
122
- };
123
- setInitialResponse: (options: {
124
- key?: Maybe<TKey>;
125
- response: TResponse;
126
- skipRevalidation?: boolean | undefined;
127
- }) => void;
128
- reset(): void;
129
- resetSpecificKey(key: Maybe<TKey>): void;
130
- invalidate: () => void;
131
- invalidateSpecificKey: (key?: Maybe<TKey>) => void;
132
- suspend: (key?: Maybe<TKey>) => {
133
- key: TKey;
134
- keyHash: string;
135
- fetch: () => void;
136
- forceFetch: () => Promise<QueryState<TKey, TResponse, TData, TError, TPageParam>>;
137
- fetchNextPage: () => Promise<QueryState<TKey, TResponse, TData, TError, TPageParam>>;
138
- reset: () => void;
139
- optimisticUpdate: (response: TResponse | ((prevState: QueryState<TKey, TResponse, TData, TError, TPageParam>) => TResponse)) => {
140
- revert: () => void;
141
- invalidate: () => void;
142
- };
143
- isWaiting: boolean;
144
- isWaitingNextPage: boolean;
145
- isRefetching: boolean;
146
- isRefetchError: boolean;
147
- isPreviousData: boolean;
148
- isOptimisticData: boolean;
149
- error: TError | undefined;
150
- errorUpdatedAt: number | undefined;
151
- retryCount: number;
152
- isGoingToRetry: boolean;
153
- pageParam: Maybe<TPageParam>;
154
- pageParams: Maybe<TPageParam>[];
155
- hasNextPage: boolean;
156
- retryNextPageCount: number;
157
- isGoingToRetryNextPage: boolean;
158
- } & {
159
- status: "success";
160
- isLoading: false;
161
- isSuccess: true;
162
- isError: false;
163
- data: TData;
164
- response: TResponse;
165
- responseUpdatedAt: number | undefined;
166
- };
167
- };
@@ -1,74 +0,0 @@
1
- import { hasValue } from '../utils';
2
- import { createQuery } from './create-query';
3
- export const createBiDirectionQuery = (queryFn, options) => {
4
- const { getPrevPageParam, getNextPageParam, select, ...restOptions } = options;
5
- const usePrevPagesQuery = createQuery((key, state) => queryFn(key, state, 'prev'), {
6
- defaultDeps: (state) => [
7
- state.isWaiting,
8
- state.data,
9
- state.error,
10
- state.isWaitingNextPage,
11
- state.hasNextPage,
12
- ],
13
- fetchOnMount: false,
14
- getNextPageParam: getPrevPageParam,
15
- select: (response, state) => select(response, state, 'prev'),
16
- ...restOptions,
17
- });
18
- const useNextPagesQuery = createQuery(async (key, state) => {
19
- const isInitialPage = state.pageParam === undefined;
20
- const pQuery = usePrevPagesQuery.get(key);
21
- try {
22
- const response = await queryFn(key, state, 'next');
23
- if (isInitialPage) {
24
- const prevPageParam = getPrevPageParam(response, 1, pQuery);
25
- usePrevPagesQuery.set(key, (prev) => ({
26
- pageParams: [prevPageParam, ...prev.pageParams.slice(1)],
27
- hasNextPage: prev.isLoading ? hasValue(prevPageParam) : prev.hasNextPage,
28
- }));
29
- if (!pQuery.isLoading)
30
- pQuery.forceFetch();
31
- }
32
- return response;
33
- }
34
- catch (error) {
35
- if (isInitialPage && !pQuery.isLoading)
36
- pQuery.reset();
37
- throw error;
38
- }
39
- }, {
40
- getNextPageParam: getNextPageParam,
41
- select: (response, state) => select(response, state, 'next'),
42
- ...restOptions,
43
- });
44
- const useBiDirectionQuery = (...args) => {
45
- const pQuery = usePrevPagesQuery(...args);
46
- const nQuery = useNextPagesQuery(...args);
47
- return {
48
- ...nQuery,
49
- data: [...(pQuery.data || []), ...(nQuery.data || [])],
50
- fetchPrevPage: pQuery.fetchNextPage,
51
- hasPrevPage: pQuery.hasNextPage,
52
- isWaitingPrevPage: pQuery.isWaitingNextPage || (pQuery.isLoading && pQuery.isWaiting),
53
- };
54
- };
55
- useBiDirectionQuery.get = () => {
56
- return {
57
- prev: usePrevPagesQuery.get(),
58
- next: useNextPagesQuery.get(),
59
- };
60
- };
61
- useBiDirectionQuery.setInitialResponse = useNextPagesQuery.setInitialResponse;
62
- useBiDirectionQuery.reset = () => {
63
- usePrevPagesQuery.reset();
64
- useNextPagesQuery.reset();
65
- };
66
- useBiDirectionQuery.resetSpecificKey = (key) => {
67
- usePrevPagesQuery.resetSpecificKey(key);
68
- useNextPagesQuery.resetSpecificKey(key);
69
- };
70
- useBiDirectionQuery.invalidate = useNextPagesQuery.invalidate;
71
- useBiDirectionQuery.invalidateSpecificKey = useNextPagesQuery.invalidateSpecificKey;
72
- useBiDirectionQuery.suspend = useNextPagesQuery.suspend;
73
- return useBiDirectionQuery;
74
- };
@@ -1,39 +0,0 @@
1
- import { InitStoreOptions } from '../vanilla';
2
- import { UseStore } from './create-store';
3
- export type MutationState<TVar, TResponse = any, TError = unknown> = {
4
- /**
5
- * Network fetching status.
6
- */
7
- isWaiting: boolean;
8
- isSuccess: boolean;
9
- isError: boolean;
10
- response: TResponse | undefined;
11
- responseUpdatedAt: number | undefined;
12
- error: TError | undefined;
13
- errorUpdatedAt: number | undefined;
14
- /**
15
- * Mutate function.
16
- *
17
- * @returns Promise that will always get resolved.
18
- */
19
- mutate: TVar extends undefined ? () => Promise<{
20
- response?: TResponse;
21
- error?: TError;
22
- variables?: TVar;
23
- }> : (variables: TVar) => Promise<{
24
- response?: TResponse;
25
- error?: TError;
26
- variables?: TVar;
27
- }>;
28
- };
29
- export type UseMutation<TVar, TResponse = any, TError = unknown> = UseStore<MutationState<TVar, TResponse, TError>>;
30
- export type CreateMutationOptions<TVar, TResponse = any, TError = unknown> = InitStoreOptions<MutationState<TVar, TResponse, TError>> & {
31
- onMutate?: (variables: TVar, stateBeforeMutate: MutationState<TVar, TResponse, TError>) => void;
32
- onSuccess?: (response: TResponse, variables: TVar, stateBeforeMutate: MutationState<TVar, TResponse, TError>) => void;
33
- onError?: (error: TError, variables: TVar, stateBeforeMutate: MutationState<TVar, TResponse, TError>) => void;
34
- onSettled?: (variables: TVar, stateBeforeMutate: MutationState<TVar, TResponse, TError>) => void;
35
- };
36
- /**
37
- * @see https://floppy-disk.vercel.app/docs/api#createmutation
38
- */
39
- export declare const createMutation: <TVar, TResponse = any, TError = unknown>(mutationFn: (variables: TVar, state: MutationState<TVar, TResponse, TError>) => Promise<TResponse>, options?: CreateMutationOptions<TVar, TResponse, TError>) => UseMutation<TVar, TResponse, TError>;
@@ -1,53 +0,0 @@
1
- import { noop } from '../utils';
2
- import { createStore } from './create-store';
3
- /**
4
- * @see https://floppy-disk.vercel.app/docs/api#createmutation
5
- */
6
- export const createMutation = (mutationFn, options = {}) => {
7
- const { onMutate = noop, onSuccess = noop, onError = noop, onSettled = noop, ...createStoreOptions } = options;
8
- const useMutation = createStore(({ set, get }) => ({
9
- isWaiting: false,
10
- isSuccess: false,
11
- isError: false,
12
- response: undefined,
13
- responseUpdatedAt: undefined,
14
- error: undefined,
15
- errorUpdatedAt: undefined,
16
- mutate: ((variables) => {
17
- set({ isWaiting: true });
18
- const stateBeforeMutate = get();
19
- onMutate(variables, stateBeforeMutate);
20
- return new Promise((resolve) => {
21
- mutationFn(variables, stateBeforeMutate)
22
- .then((response) => {
23
- set({
24
- isWaiting: false,
25
- isSuccess: true,
26
- isError: false,
27
- response,
28
- responseUpdatedAt: Date.now(),
29
- error: undefined,
30
- errorUpdatedAt: undefined,
31
- });
32
- onSuccess(response, variables, stateBeforeMutate);
33
- resolve({ response, variables });
34
- })
35
- .catch((error) => {
36
- set({
37
- isWaiting: false,
38
- isSuccess: false,
39
- isError: true,
40
- error,
41
- errorUpdatedAt: Date.now(),
42
- });
43
- onError(error, variables, stateBeforeMutate);
44
- resolve({ error, variables });
45
- })
46
- .finally(() => {
47
- onSettled(variables, stateBeforeMutate);
48
- });
49
- });
50
- }),
51
- }), createStoreOptions);
52
- return useMutation;
53
- };