floppy-disk 2.0.0-alpha.1 → 2.0.0-alpha.2

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.
@@ -153,7 +153,13 @@ export type UseQuery<TKey extends StoreKey = StoreKey, TResponse = any, TData =
153
153
  key?: TKey;
154
154
  response: TResponse;
155
155
  }) => void;
156
+ /**
157
+ * Invalidate query means marking a query as stale, and will refetch only if the query is active (has subscriber)
158
+ */
156
159
  invalidate: () => void;
160
+ /**
161
+ * Invalidate query means marking a query as stale, and will refetch only if the query is active (has subscriber)
162
+ */
157
163
  invalidateSpecificKey: (key?: TKey | null) => void;
158
164
  /**
159
165
  * Optimistic update.
@@ -278,16 +278,16 @@ export const createQuery = (queryFn, options = {}) => {
278
278
  });
279
279
  };
280
280
  useQuery.invalidate = () => {
281
- useQuery.getAll().forEach(({ key }) => {
282
- useQuery.get(key).markAsStale();
283
- });
284
- useQuery.getAllWithSubscriber().forEach(({ key }) => {
285
- useQuery.get(key).forceFetch();
281
+ useQuery.getStores().forEach((store) => {
282
+ const { set, getSubscribers } = store;
283
+ set({ responseUpdatedAt: null });
284
+ if (getSubscribers().size > 0)
285
+ store.get().forceFetch();
286
286
  });
287
287
  };
288
288
  useQuery.invalidateSpecificKey = (key) => {
289
- useQuery.get(key).markAsStale();
290
- const { getSubscribers } = useQuery.getStore(key);
289
+ const { set, getSubscribers } = useQuery.getStore(key);
290
+ set({ responseUpdatedAt: null });
291
291
  if (getSubscribers().size > 0)
292
292
  useQuery.get(key).forceFetch();
293
293
  };
@@ -25,6 +25,7 @@ export type UseStores<TKey extends StoreKey = StoreKey, T extends StoreData = St
25
25
  subscribe: (key: Maybe<TKey>, fn: (state: T) => void, selectDeps?: SelectDeps<T>) => () => void;
26
26
  getSubscribers: (key: Maybe<TKey>) => Subscribers<T>;
27
27
  getStore: (key?: Maybe<TKey>) => InitStoreReturn<T>;
28
+ getStores: () => Map<string, InitStoreReturn<T>>;
28
29
  /**
29
30
  * Set default values inside a component.
30
31
  *
@@ -75,6 +75,7 @@ export const createStores = (initializer, options = {}) => {
75
75
  return store.getSubscribers();
76
76
  };
77
77
  useStores.getStore = (key) => getStore(key);
78
+ useStores.getStores = () => stores;
78
79
  useStores.setDefaultValues = (key, value) => {
79
80
  // eslint-disable-next-line react-hooks/rules-of-hooks
80
81
  useState(() => {
@@ -153,7 +153,13 @@ export type UseQuery<TKey extends StoreKey = StoreKey, TResponse = any, TData =
153
153
  key?: TKey;
154
154
  response: TResponse;
155
155
  }) => void;
156
+ /**
157
+ * Invalidate query means marking a query as stale, and will refetch only if the query is active (has subscriber)
158
+ */
156
159
  invalidate: () => void;
160
+ /**
161
+ * Invalidate query means marking a query as stale, and will refetch only if the query is active (has subscriber)
162
+ */
157
163
  invalidateSpecificKey: (key?: TKey | null) => void;
158
164
  /**
159
165
  * Optimistic update.
@@ -281,16 +281,16 @@ const createQuery = (queryFn, options = {}) => {
281
281
  });
282
282
  };
283
283
  useQuery.invalidate = () => {
284
- useQuery.getAll().forEach(({ key }) => {
285
- useQuery.get(key).markAsStale();
286
- });
287
- useQuery.getAllWithSubscriber().forEach(({ key }) => {
288
- useQuery.get(key).forceFetch();
284
+ useQuery.getStores().forEach((store) => {
285
+ const { set, getSubscribers } = store;
286
+ set({ responseUpdatedAt: null });
287
+ if (getSubscribers().size > 0)
288
+ store.get().forceFetch();
289
289
  });
290
290
  };
291
291
  useQuery.invalidateSpecificKey = (key) => {
292
- useQuery.get(key).markAsStale();
293
- const { getSubscribers } = useQuery.getStore(key);
292
+ const { set, getSubscribers } = useQuery.getStore(key);
293
+ set({ responseUpdatedAt: null });
294
294
  if (getSubscribers().size > 0)
295
295
  useQuery.get(key).forceFetch();
296
296
  };
@@ -25,6 +25,7 @@ export type UseStores<TKey extends StoreKey = StoreKey, T extends StoreData = St
25
25
  subscribe: (key: Maybe<TKey>, fn: (state: T) => void, selectDeps?: SelectDeps<T>) => () => void;
26
26
  getSubscribers: (key: Maybe<TKey>) => Subscribers<T>;
27
27
  getStore: (key?: Maybe<TKey>) => InitStoreReturn<T>;
28
+ getStores: () => Map<string, InitStoreReturn<T>>;
28
29
  /**
29
30
  * Set default values inside a component.
30
31
  *
@@ -78,6 +78,7 @@ const createStores = (initializer, options = {}) => {
78
78
  return store.getSubscribers();
79
79
  };
80
80
  useStores.getStore = (key) => getStore(key);
81
+ useStores.getStores = () => stores;
81
82
  useStores.setDefaultValues = (key, value) => {
82
83
  // eslint-disable-next-line react-hooks/rules-of-hooks
83
84
  (0, react_1.useState)(() => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "floppy-disk",
3
- "version": "2.0.0-alpha.1",
3
+ "version": "2.0.0-alpha.2",
4
4
  "description": "FloppyDisk - lightweight, simple, and powerful state management library",
5
5
  "keywords": [
6
6
  "state",