@tanstack/query-core 4.39.0 → 4.39.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.
Files changed (131) hide show
  1. package/build/lib/focusManager.esm.js +91 -0
  2. package/build/lib/focusManager.esm.js.map +1 -0
  3. package/build/lib/focusManager.js +96 -0
  4. package/build/lib/focusManager.js.map +1 -0
  5. package/build/lib/focusManager.mjs +91 -0
  6. package/build/lib/focusManager.mjs.map +1 -0
  7. package/build/lib/hydration.esm.js +109 -0
  8. package/build/lib/hydration.esm.js.map +1 -0
  9. package/build/lib/hydration.js +116 -0
  10. package/build/lib/hydration.js.map +1 -0
  11. package/build/lib/hydration.mjs +109 -0
  12. package/build/lib/hydration.mjs.map +1 -0
  13. package/build/lib/index.esm.js +15 -0
  14. package/build/lib/index.esm.js.map +1 -0
  15. package/build/lib/index.js +48 -0
  16. package/build/lib/index.js.map +1 -0
  17. package/build/lib/index.mjs +15 -0
  18. package/build/lib/index.mjs.map +1 -0
  19. package/build/lib/infiniteQueryBehavior.esm.js +146 -0
  20. package/build/lib/infiniteQueryBehavior.esm.js.map +1 -0
  21. package/build/lib/infiniteQueryBehavior.js +154 -0
  22. package/build/lib/infiniteQueryBehavior.js.map +1 -0
  23. package/build/lib/infiniteQueryBehavior.mjs +146 -0
  24. package/build/lib/infiniteQueryBehavior.mjs.map +1 -0
  25. package/build/lib/infiniteQueryObserver.esm.js +85 -0
  26. package/build/lib/infiniteQueryObserver.esm.js.map +1 -0
  27. package/build/lib/infiniteQueryObserver.js +89 -0
  28. package/build/lib/infiniteQueryObserver.js.map +1 -0
  29. package/build/lib/infiniteQueryObserver.mjs +85 -0
  30. package/build/lib/infiniteQueryObserver.mjs.map +1 -0
  31. package/build/lib/logger.esm.js +4 -0
  32. package/build/lib/logger.esm.js.map +1 -0
  33. package/build/lib/logger.js +8 -0
  34. package/build/lib/logger.js.map +1 -0
  35. package/build/lib/logger.mjs +4 -0
  36. package/build/lib/logger.mjs.map +1 -0
  37. package/build/lib/logger.native.esm.js +12 -0
  38. package/build/lib/logger.native.esm.js.map +1 -0
  39. package/build/lib/logger.native.js +16 -0
  40. package/build/lib/logger.native.js.map +1 -0
  41. package/build/lib/logger.native.mjs +12 -0
  42. package/build/lib/logger.native.mjs.map +1 -0
  43. package/build/lib/mutation.esm.js +261 -0
  44. package/build/lib/mutation.esm.js.map +1 -0
  45. package/build/lib/mutation.js +266 -0
  46. package/build/lib/mutation.js.map +1 -0
  47. package/build/lib/mutation.mjs +261 -0
  48. package/build/lib/mutation.mjs.map +1 -0
  49. package/build/lib/mutationCache.esm.js +93 -0
  50. package/build/lib/mutationCache.esm.js.map +1 -0
  51. package/build/lib/mutationCache.js +97 -0
  52. package/build/lib/mutationCache.js.map +1 -0
  53. package/build/lib/mutationCache.mjs +93 -0
  54. package/build/lib/mutationCache.mjs.map +1 -0
  55. package/build/lib/mutationObserver.esm.js +134 -0
  56. package/build/lib/mutationObserver.esm.js.map +1 -0
  57. package/build/lib/mutationObserver.js +138 -0
  58. package/build/lib/mutationObserver.js.map +1 -0
  59. package/build/lib/mutationObserver.mjs +134 -0
  60. package/build/lib/mutationObserver.mjs.map +1 -0
  61. package/build/lib/notifyManager.esm.js +99 -0
  62. package/build/lib/notifyManager.esm.js.map +1 -0
  63. package/build/lib/notifyManager.js +104 -0
  64. package/build/lib/notifyManager.js.map +1 -0
  65. package/build/lib/notifyManager.mjs +99 -0
  66. package/build/lib/notifyManager.mjs.map +1 -0
  67. package/build/lib/onlineManager.esm.js +93 -0
  68. package/build/lib/onlineManager.esm.js.map +1 -0
  69. package/build/lib/onlineManager.js +98 -0
  70. package/build/lib/onlineManager.js.map +1 -0
  71. package/build/lib/onlineManager.mjs +93 -0
  72. package/build/lib/onlineManager.mjs.map +1 -0
  73. package/build/lib/queriesObserver.esm.js +168 -0
  74. package/build/lib/queriesObserver.esm.js.map +1 -0
  75. package/build/lib/queriesObserver.js +172 -0
  76. package/build/lib/queriesObserver.js.map +1 -0
  77. package/build/lib/queriesObserver.mjs +168 -0
  78. package/build/lib/queriesObserver.mjs.map +1 -0
  79. package/build/lib/query.esm.js +475 -0
  80. package/build/lib/query.esm.js.map +1 -0
  81. package/build/lib/query.js +479 -0
  82. package/build/lib/query.js.map +1 -0
  83. package/build/lib/query.mjs +475 -0
  84. package/build/lib/query.mjs.map +1 -0
  85. package/build/lib/queryCache.esm.js +133 -0
  86. package/build/lib/queryCache.esm.js.map +1 -0
  87. package/build/lib/queryCache.js +137 -0
  88. package/build/lib/queryCache.js.map +1 -0
  89. package/build/lib/queryCache.mjs +133 -0
  90. package/build/lib/queryCache.mjs.map +1 -0
  91. package/build/lib/queryClient.esm.js +402 -0
  92. package/build/lib/queryClient.esm.js.map +1 -0
  93. package/build/lib/queryClient.js +406 -0
  94. package/build/lib/queryClient.js.map +1 -0
  95. package/build/lib/queryClient.mjs +402 -0
  96. package/build/lib/queryClient.mjs.map +1 -0
  97. package/build/lib/queryObserver.esm.js +580 -0
  98. package/build/lib/queryObserver.esm.js.map +1 -0
  99. package/build/lib/queryObserver.js +584 -0
  100. package/build/lib/queryObserver.js.map +1 -0
  101. package/build/lib/queryObserver.mjs +580 -0
  102. package/build/lib/queryObserver.mjs.map +1 -0
  103. package/build/lib/removable.esm.js +33 -0
  104. package/build/lib/removable.esm.js.map +1 -0
  105. package/build/lib/removable.js +37 -0
  106. package/build/lib/removable.js.map +1 -0
  107. package/build/lib/removable.mjs +33 -0
  108. package/build/lib/removable.mjs.map +1 -0
  109. package/build/lib/retryer.esm.js +167 -0
  110. package/build/lib/retryer.esm.js.map +1 -0
  111. package/build/lib/retryer.js +174 -0
  112. package/build/lib/retryer.js.map +1 -0
  113. package/build/lib/retryer.mjs +167 -0
  114. package/build/lib/retryer.mjs.map +1 -0
  115. package/build/lib/subscribable.esm.js +32 -0
  116. package/build/lib/subscribable.esm.js.map +1 -0
  117. package/build/lib/subscribable.js +36 -0
  118. package/build/lib/subscribable.js.map +1 -0
  119. package/build/lib/subscribable.mjs +32 -0
  120. package/build/lib/subscribable.mjs.map +1 -0
  121. package/build/lib/utils.esm.js +320 -0
  122. package/build/lib/utils.esm.js.map +1 -0
  123. package/build/lib/utils.js +350 -0
  124. package/build/lib/utils.js.map +1 -0
  125. package/build/lib/utils.mjs +320 -0
  126. package/build/lib/utils.mjs.map +1 -0
  127. package/build/umd/index.development.js +3361 -0
  128. package/build/umd/index.development.js.map +1 -0
  129. package/build/umd/index.production.js +2 -0
  130. package/build/umd/index.production.js.map +1 -0
  131. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryCache.esm.js","sources":["../../src/queryCache.ts"],"sourcesContent":["import { hashQueryKeyByOptions, matchQuery, parseFilterArgs } from './utils'\nimport { Query } from './query'\nimport { notifyManager } from './notifyManager'\nimport { Subscribable } from './subscribable'\nimport type { QueryFilters } from './utils'\nimport type { Action, QueryState } from './query'\nimport type { NotifyEvent, OmitKeyof, QueryKey, QueryOptions } from './types'\nimport type { QueryClient } from './queryClient'\nimport type { QueryObserver } from './queryObserver'\n\n// TYPES\n\ninterface QueryCacheConfig {\n onError?: (error: unknown, query: Query<unknown, unknown, unknown>) => void\n onSuccess?: (data: unknown, query: Query<unknown, unknown, unknown>) => void\n onSettled?: (\n data: unknown | undefined,\n error: unknown | null,\n query: Query<unknown, unknown, unknown>,\n ) => void\n}\n\ninterface QueryHashMap {\n [hash: string]: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryAdded extends NotifyEvent {\n type: 'added'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryRemoved extends NotifyEvent {\n type: 'removed'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryUpdated extends NotifyEvent {\n type: 'updated'\n query: Query<any, any, any, any>\n action: Action<any, any>\n}\n\ninterface NotifyEventQueryObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverResultsUpdated extends NotifyEvent {\n type: 'observerResultsUpdated'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\nexport type QueryCacheNotifyEvent =\n | NotifyEventQueryAdded\n | NotifyEventQueryRemoved\n | NotifyEventQueryUpdated\n | NotifyEventQueryObserverAdded\n | NotifyEventQueryObserverRemoved\n | NotifyEventQueryObserverResultsUpdated\n | NotifyEventQueryObserverOptionsUpdated\n\ntype QueryCacheListener = (event: QueryCacheNotifyEvent) => void\n\n// CLASS\n\nexport class QueryCache extends Subscribable<QueryCacheListener> {\n config: QueryCacheConfig\n\n private queries: Query<any, any, any, any>[]\n private queriesMap: QueryHashMap\n\n constructor(config?: QueryCacheConfig) {\n super()\n this.config = config || {}\n this.queries = []\n this.queriesMap = {}\n }\n\n build<TQueryFnData, TError, TData, TQueryKey extends QueryKey>(\n client: QueryClient,\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n state?: QueryState<TData, TError>,\n ): Query<TQueryFnData, TError, TData, TQueryKey> {\n const queryKey = options.queryKey!\n const queryHash =\n options.queryHash ?? hashQueryKeyByOptions(queryKey, options)\n let query = this.get<TQueryFnData, TError, TData, TQueryKey>(queryHash)\n\n if (!query) {\n query = new Query({\n cache: this,\n logger: client.getLogger(),\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey),\n })\n this.add(query)\n }\n\n return query\n }\n\n add(query: Query<any, any, any, any>): void {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query\n this.queries.push(query)\n this.notify({\n type: 'added',\n query,\n })\n }\n }\n\n remove(query: Query<any, any, any, any>): void {\n const queryInMap = this.queriesMap[query.queryHash]\n\n if (queryInMap) {\n query.destroy()\n\n this.queries = this.queries.filter((x) => x !== query)\n\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash]\n }\n\n this.notify({ type: 'removed', query })\n }\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n this.remove(query)\n })\n })\n }\n\n get<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryHash: string,\n ): Query<TQueryFnData, TError, TData, TQueryKey> | undefined {\n return this.queriesMap[queryHash]\n }\n\n getAll(): Query[] {\n return this.queries\n }\n\n find<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(\n filters: QueryFilters,\n ): Query<TQueryFnData, TError, TData> | undefined\n /**\n * @deprecated This method should be used with only one object argument.\n */\n find<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(\n queryKey: QueryKey,\n filters?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query<TQueryFnData, TError, TData> | undefined\n /**\n * @deprecated This method should be used with only one object argument.\n */\n find<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(\n arg1: QueryKey | QueryFilters,\n arg2?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query<TQueryFnData, TError, TData> | undefined {\n const [filters] = parseFilterArgs(arg1, arg2)\n\n if (typeof filters.exact === 'undefined') {\n filters.exact = true\n }\n\n return this.queries.find((query) => matchQuery(filters, query))\n }\n\n findAll(filters?: QueryFilters): Query[]\n /**\n * @deprecated This method should be used with only one object argument.\n */\n findAll(\n queryKey?: QueryKey,\n filters?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query[]\n /**\n * @deprecated This method should be used with only one object argument.\n */\n findAll(\n arg1?: QueryKey | QueryFilters,\n arg2?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query[]\n /**\n * @deprecated This method should be used with only one object argument.\n */\n findAll(\n arg1?: QueryKey | QueryFilters,\n arg2?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query[] {\n const [filters] = parseFilterArgs(arg1, arg2)\n return Object.keys(filters).length > 0\n ? this.queries.filter((query) => matchQuery(filters, query))\n : this.queries\n }\n\n notify(event: QueryCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach(({ listener }) => {\n listener(event)\n })\n })\n }\n\n onFocus(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onFocus()\n })\n })\n }\n\n onOnline(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onOnline()\n })\n })\n }\n}\n"],"names":["QueryCache","Subscribable","constructor","config","queries","queriesMap","build","client","options","state","queryKey","queryHash","hashQueryKeyByOptions","query","get","Query","cache","logger","getLogger","defaultQueryOptions","defaultOptions","getQueryDefaults","add","push","notify","type","remove","queryInMap","destroy","filter","x","clear","notifyManager","batch","forEach","getAll","find","arg1","arg2","filters","parseFilterArgs","exact","matchQuery","findAll","Object","keys","length","event","listeners","listener","onFocus","onOnline"],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('./utils.js');
6
+ var query = require('./query.js');
7
+ var notifyManager = require('./notifyManager.js');
8
+ var subscribable = require('./subscribable.js');
9
+
10
+ // CLASS
11
+ class QueryCache extends subscribable.Subscribable {
12
+ constructor(config) {
13
+ super();
14
+ this.config = config || {};
15
+ this.queries = [];
16
+ this.queriesMap = {};
17
+ }
18
+
19
+ build(client, options, state) {
20
+ var _options$queryHash;
21
+
22
+ const queryKey = options.queryKey;
23
+ const queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : utils.hashQueryKeyByOptions(queryKey, options);
24
+ let query$1 = this.get(queryHash);
25
+
26
+ if (!query$1) {
27
+ query$1 = new query.Query({
28
+ cache: this,
29
+ logger: client.getLogger(),
30
+ queryKey,
31
+ queryHash,
32
+ options: client.defaultQueryOptions(options),
33
+ state,
34
+ defaultOptions: client.getQueryDefaults(queryKey)
35
+ });
36
+ this.add(query$1);
37
+ }
38
+
39
+ return query$1;
40
+ }
41
+
42
+ add(query) {
43
+ if (!this.queriesMap[query.queryHash]) {
44
+ this.queriesMap[query.queryHash] = query;
45
+ this.queries.push(query);
46
+ this.notify({
47
+ type: 'added',
48
+ query
49
+ });
50
+ }
51
+ }
52
+
53
+ remove(query) {
54
+ const queryInMap = this.queriesMap[query.queryHash];
55
+
56
+ if (queryInMap) {
57
+ query.destroy();
58
+ this.queries = this.queries.filter(x => x !== query);
59
+
60
+ if (queryInMap === query) {
61
+ delete this.queriesMap[query.queryHash];
62
+ }
63
+
64
+ this.notify({
65
+ type: 'removed',
66
+ query
67
+ });
68
+ }
69
+ }
70
+
71
+ clear() {
72
+ notifyManager.notifyManager.batch(() => {
73
+ this.queries.forEach(query => {
74
+ this.remove(query);
75
+ });
76
+ });
77
+ }
78
+
79
+ get(queryHash) {
80
+ return this.queriesMap[queryHash];
81
+ }
82
+
83
+ getAll() {
84
+ return this.queries;
85
+ }
86
+
87
+ /**
88
+ * @deprecated This method should be used with only one object argument.
89
+ */
90
+ find(arg1, arg2) {
91
+ const [filters] = utils.parseFilterArgs(arg1, arg2);
92
+
93
+ if (typeof filters.exact === 'undefined') {
94
+ filters.exact = true;
95
+ }
96
+
97
+ return this.queries.find(query => utils.matchQuery(filters, query));
98
+ }
99
+
100
+ /**
101
+ * @deprecated This method should be used with only one object argument.
102
+ */
103
+ findAll(arg1, arg2) {
104
+ const [filters] = utils.parseFilterArgs(arg1, arg2);
105
+ return Object.keys(filters).length > 0 ? this.queries.filter(query => utils.matchQuery(filters, query)) : this.queries;
106
+ }
107
+
108
+ notify(event) {
109
+ notifyManager.notifyManager.batch(() => {
110
+ this.listeners.forEach(({
111
+ listener
112
+ }) => {
113
+ listener(event);
114
+ });
115
+ });
116
+ }
117
+
118
+ onFocus() {
119
+ notifyManager.notifyManager.batch(() => {
120
+ this.queries.forEach(query => {
121
+ query.onFocus();
122
+ });
123
+ });
124
+ }
125
+
126
+ onOnline() {
127
+ notifyManager.notifyManager.batch(() => {
128
+ this.queries.forEach(query => {
129
+ query.onOnline();
130
+ });
131
+ });
132
+ }
133
+
134
+ }
135
+
136
+ exports.QueryCache = QueryCache;
137
+ //# sourceMappingURL=queryCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryCache.js","sources":["../../src/queryCache.ts"],"sourcesContent":["import { hashQueryKeyByOptions, matchQuery, parseFilterArgs } from './utils'\nimport { Query } from './query'\nimport { notifyManager } from './notifyManager'\nimport { Subscribable } from './subscribable'\nimport type { QueryFilters } from './utils'\nimport type { Action, QueryState } from './query'\nimport type { NotifyEvent, OmitKeyof, QueryKey, QueryOptions } from './types'\nimport type { QueryClient } from './queryClient'\nimport type { QueryObserver } from './queryObserver'\n\n// TYPES\n\ninterface QueryCacheConfig {\n onError?: (error: unknown, query: Query<unknown, unknown, unknown>) => void\n onSuccess?: (data: unknown, query: Query<unknown, unknown, unknown>) => void\n onSettled?: (\n data: unknown | undefined,\n error: unknown | null,\n query: Query<unknown, unknown, unknown>,\n ) => void\n}\n\ninterface QueryHashMap {\n [hash: string]: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryAdded extends NotifyEvent {\n type: 'added'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryRemoved extends NotifyEvent {\n type: 'removed'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryUpdated extends NotifyEvent {\n type: 'updated'\n query: Query<any, any, any, any>\n action: Action<any, any>\n}\n\ninterface NotifyEventQueryObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverResultsUpdated extends NotifyEvent {\n type: 'observerResultsUpdated'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\nexport type QueryCacheNotifyEvent =\n | NotifyEventQueryAdded\n | NotifyEventQueryRemoved\n | NotifyEventQueryUpdated\n | NotifyEventQueryObserverAdded\n | NotifyEventQueryObserverRemoved\n | NotifyEventQueryObserverResultsUpdated\n | NotifyEventQueryObserverOptionsUpdated\n\ntype QueryCacheListener = (event: QueryCacheNotifyEvent) => void\n\n// CLASS\n\nexport class QueryCache extends Subscribable<QueryCacheListener> {\n config: QueryCacheConfig\n\n private queries: Query<any, any, any, any>[]\n private queriesMap: QueryHashMap\n\n constructor(config?: QueryCacheConfig) {\n super()\n this.config = config || {}\n this.queries = []\n this.queriesMap = {}\n }\n\n build<TQueryFnData, TError, TData, TQueryKey extends QueryKey>(\n client: QueryClient,\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n state?: QueryState<TData, TError>,\n ): Query<TQueryFnData, TError, TData, TQueryKey> {\n const queryKey = options.queryKey!\n const queryHash =\n options.queryHash ?? hashQueryKeyByOptions(queryKey, options)\n let query = this.get<TQueryFnData, TError, TData, TQueryKey>(queryHash)\n\n if (!query) {\n query = new Query({\n cache: this,\n logger: client.getLogger(),\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey),\n })\n this.add(query)\n }\n\n return query\n }\n\n add(query: Query<any, any, any, any>): void {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query\n this.queries.push(query)\n this.notify({\n type: 'added',\n query,\n })\n }\n }\n\n remove(query: Query<any, any, any, any>): void {\n const queryInMap = this.queriesMap[query.queryHash]\n\n if (queryInMap) {\n query.destroy()\n\n this.queries = this.queries.filter((x) => x !== query)\n\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash]\n }\n\n this.notify({ type: 'removed', query })\n }\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n this.remove(query)\n })\n })\n }\n\n get<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryHash: string,\n ): Query<TQueryFnData, TError, TData, TQueryKey> | undefined {\n return this.queriesMap[queryHash]\n }\n\n getAll(): Query[] {\n return this.queries\n }\n\n find<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(\n filters: QueryFilters,\n ): Query<TQueryFnData, TError, TData> | undefined\n /**\n * @deprecated This method should be used with only one object argument.\n */\n find<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(\n queryKey: QueryKey,\n filters?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query<TQueryFnData, TError, TData> | undefined\n /**\n * @deprecated This method should be used with only one object argument.\n */\n find<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(\n arg1: QueryKey | QueryFilters,\n arg2?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query<TQueryFnData, TError, TData> | undefined {\n const [filters] = parseFilterArgs(arg1, arg2)\n\n if (typeof filters.exact === 'undefined') {\n filters.exact = true\n }\n\n return this.queries.find((query) => matchQuery(filters, query))\n }\n\n findAll(filters?: QueryFilters): Query[]\n /**\n * @deprecated This method should be used with only one object argument.\n */\n findAll(\n queryKey?: QueryKey,\n filters?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query[]\n /**\n * @deprecated This method should be used with only one object argument.\n */\n findAll(\n arg1?: QueryKey | QueryFilters,\n arg2?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query[]\n /**\n * @deprecated This method should be used with only one object argument.\n */\n findAll(\n arg1?: QueryKey | QueryFilters,\n arg2?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query[] {\n const [filters] = parseFilterArgs(arg1, arg2)\n return Object.keys(filters).length > 0\n ? this.queries.filter((query) => matchQuery(filters, query))\n : this.queries\n }\n\n notify(event: QueryCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach(({ listener }) => {\n listener(event)\n })\n })\n }\n\n onFocus(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onFocus()\n })\n })\n }\n\n onOnline(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onOnline()\n })\n })\n }\n}\n"],"names":["QueryCache","Subscribable","constructor","config","queries","queriesMap","build","client","options","state","queryKey","queryHash","hashQueryKeyByOptions","query","get","Query","cache","logger","getLogger","defaultQueryOptions","defaultOptions","getQueryDefaults","add","push","notify","type","remove","queryInMap","destroy","filter","x","clear","notifyManager","batch","forEach","getAll","find","arg1","arg2","filters","parseFilterArgs","exact","matchQuery","findAll","Object","keys","length","event","listeners","listener","onFocus","onOnline"],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ import { hashQueryKeyByOptions, parseFilterArgs, matchQuery } from './utils.mjs';
2
+ import { Query } from './query.mjs';
3
+ import { notifyManager } from './notifyManager.mjs';
4
+ import { Subscribable } from './subscribable.mjs';
5
+
6
+ // CLASS
7
+ class QueryCache extends Subscribable {
8
+ constructor(config) {
9
+ super();
10
+ this.config = config || {};
11
+ this.queries = [];
12
+ this.queriesMap = {};
13
+ }
14
+
15
+ build(client, options, state) {
16
+ var _options$queryHash;
17
+
18
+ const queryKey = options.queryKey;
19
+ const queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : hashQueryKeyByOptions(queryKey, options);
20
+ let query = this.get(queryHash);
21
+
22
+ if (!query) {
23
+ query = new Query({
24
+ cache: this,
25
+ logger: client.getLogger(),
26
+ queryKey,
27
+ queryHash,
28
+ options: client.defaultQueryOptions(options),
29
+ state,
30
+ defaultOptions: client.getQueryDefaults(queryKey)
31
+ });
32
+ this.add(query);
33
+ }
34
+
35
+ return query;
36
+ }
37
+
38
+ add(query) {
39
+ if (!this.queriesMap[query.queryHash]) {
40
+ this.queriesMap[query.queryHash] = query;
41
+ this.queries.push(query);
42
+ this.notify({
43
+ type: 'added',
44
+ query
45
+ });
46
+ }
47
+ }
48
+
49
+ remove(query) {
50
+ const queryInMap = this.queriesMap[query.queryHash];
51
+
52
+ if (queryInMap) {
53
+ query.destroy();
54
+ this.queries = this.queries.filter(x => x !== query);
55
+
56
+ if (queryInMap === query) {
57
+ delete this.queriesMap[query.queryHash];
58
+ }
59
+
60
+ this.notify({
61
+ type: 'removed',
62
+ query
63
+ });
64
+ }
65
+ }
66
+
67
+ clear() {
68
+ notifyManager.batch(() => {
69
+ this.queries.forEach(query => {
70
+ this.remove(query);
71
+ });
72
+ });
73
+ }
74
+
75
+ get(queryHash) {
76
+ return this.queriesMap[queryHash];
77
+ }
78
+
79
+ getAll() {
80
+ return this.queries;
81
+ }
82
+
83
+ /**
84
+ * @deprecated This method should be used with only one object argument.
85
+ */
86
+ find(arg1, arg2) {
87
+ const [filters] = parseFilterArgs(arg1, arg2);
88
+
89
+ if (typeof filters.exact === 'undefined') {
90
+ filters.exact = true;
91
+ }
92
+
93
+ return this.queries.find(query => matchQuery(filters, query));
94
+ }
95
+
96
+ /**
97
+ * @deprecated This method should be used with only one object argument.
98
+ */
99
+ findAll(arg1, arg2) {
100
+ const [filters] = parseFilterArgs(arg1, arg2);
101
+ return Object.keys(filters).length > 0 ? this.queries.filter(query => matchQuery(filters, query)) : this.queries;
102
+ }
103
+
104
+ notify(event) {
105
+ notifyManager.batch(() => {
106
+ this.listeners.forEach(({
107
+ listener
108
+ }) => {
109
+ listener(event);
110
+ });
111
+ });
112
+ }
113
+
114
+ onFocus() {
115
+ notifyManager.batch(() => {
116
+ this.queries.forEach(query => {
117
+ query.onFocus();
118
+ });
119
+ });
120
+ }
121
+
122
+ onOnline() {
123
+ notifyManager.batch(() => {
124
+ this.queries.forEach(query => {
125
+ query.onOnline();
126
+ });
127
+ });
128
+ }
129
+
130
+ }
131
+
132
+ export { QueryCache };
133
+ //# sourceMappingURL=queryCache.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryCache.mjs","sources":["../../src/queryCache.ts"],"sourcesContent":["import { hashQueryKeyByOptions, matchQuery, parseFilterArgs } from './utils'\nimport { Query } from './query'\nimport { notifyManager } from './notifyManager'\nimport { Subscribable } from './subscribable'\nimport type { QueryFilters } from './utils'\nimport type { Action, QueryState } from './query'\nimport type { NotifyEvent, OmitKeyof, QueryKey, QueryOptions } from './types'\nimport type { QueryClient } from './queryClient'\nimport type { QueryObserver } from './queryObserver'\n\n// TYPES\n\ninterface QueryCacheConfig {\n onError?: (error: unknown, query: Query<unknown, unknown, unknown>) => void\n onSuccess?: (data: unknown, query: Query<unknown, unknown, unknown>) => void\n onSettled?: (\n data: unknown | undefined,\n error: unknown | null,\n query: Query<unknown, unknown, unknown>,\n ) => void\n}\n\ninterface QueryHashMap {\n [hash: string]: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryAdded extends NotifyEvent {\n type: 'added'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryRemoved extends NotifyEvent {\n type: 'removed'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryUpdated extends NotifyEvent {\n type: 'updated'\n query: Query<any, any, any, any>\n action: Action<any, any>\n}\n\ninterface NotifyEventQueryObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverResultsUpdated extends NotifyEvent {\n type: 'observerResultsUpdated'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\nexport type QueryCacheNotifyEvent =\n | NotifyEventQueryAdded\n | NotifyEventQueryRemoved\n | NotifyEventQueryUpdated\n | NotifyEventQueryObserverAdded\n | NotifyEventQueryObserverRemoved\n | NotifyEventQueryObserverResultsUpdated\n | NotifyEventQueryObserverOptionsUpdated\n\ntype QueryCacheListener = (event: QueryCacheNotifyEvent) => void\n\n// CLASS\n\nexport class QueryCache extends Subscribable<QueryCacheListener> {\n config: QueryCacheConfig\n\n private queries: Query<any, any, any, any>[]\n private queriesMap: QueryHashMap\n\n constructor(config?: QueryCacheConfig) {\n super()\n this.config = config || {}\n this.queries = []\n this.queriesMap = {}\n }\n\n build<TQueryFnData, TError, TData, TQueryKey extends QueryKey>(\n client: QueryClient,\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n state?: QueryState<TData, TError>,\n ): Query<TQueryFnData, TError, TData, TQueryKey> {\n const queryKey = options.queryKey!\n const queryHash =\n options.queryHash ?? hashQueryKeyByOptions(queryKey, options)\n let query = this.get<TQueryFnData, TError, TData, TQueryKey>(queryHash)\n\n if (!query) {\n query = new Query({\n cache: this,\n logger: client.getLogger(),\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey),\n })\n this.add(query)\n }\n\n return query\n }\n\n add(query: Query<any, any, any, any>): void {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query\n this.queries.push(query)\n this.notify({\n type: 'added',\n query,\n })\n }\n }\n\n remove(query: Query<any, any, any, any>): void {\n const queryInMap = this.queriesMap[query.queryHash]\n\n if (queryInMap) {\n query.destroy()\n\n this.queries = this.queries.filter((x) => x !== query)\n\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash]\n }\n\n this.notify({ type: 'removed', query })\n }\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n this.remove(query)\n })\n })\n }\n\n get<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryHash: string,\n ): Query<TQueryFnData, TError, TData, TQueryKey> | undefined {\n return this.queriesMap[queryHash]\n }\n\n getAll(): Query[] {\n return this.queries\n }\n\n find<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(\n filters: QueryFilters,\n ): Query<TQueryFnData, TError, TData> | undefined\n /**\n * @deprecated This method should be used with only one object argument.\n */\n find<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(\n queryKey: QueryKey,\n filters?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query<TQueryFnData, TError, TData> | undefined\n /**\n * @deprecated This method should be used with only one object argument.\n */\n find<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(\n arg1: QueryKey | QueryFilters,\n arg2?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query<TQueryFnData, TError, TData> | undefined {\n const [filters] = parseFilterArgs(arg1, arg2)\n\n if (typeof filters.exact === 'undefined') {\n filters.exact = true\n }\n\n return this.queries.find((query) => matchQuery(filters, query))\n }\n\n findAll(filters?: QueryFilters): Query[]\n /**\n * @deprecated This method should be used with only one object argument.\n */\n findAll(\n queryKey?: QueryKey,\n filters?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query[]\n /**\n * @deprecated This method should be used with only one object argument.\n */\n findAll(\n arg1?: QueryKey | QueryFilters,\n arg2?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query[]\n /**\n * @deprecated This method should be used with only one object argument.\n */\n findAll(\n arg1?: QueryKey | QueryFilters,\n arg2?: OmitKeyof<QueryFilters, 'queryKey'>,\n ): Query[] {\n const [filters] = parseFilterArgs(arg1, arg2)\n return Object.keys(filters).length > 0\n ? this.queries.filter((query) => matchQuery(filters, query))\n : this.queries\n }\n\n notify(event: QueryCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach(({ listener }) => {\n listener(event)\n })\n })\n }\n\n onFocus(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onFocus()\n })\n })\n }\n\n onOnline(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onOnline()\n })\n })\n }\n}\n"],"names":["QueryCache","Subscribable","constructor","config","queries","queriesMap","build","client","options","state","queryKey","queryHash","hashQueryKeyByOptions","query","get","Query","cache","logger","getLogger","defaultQueryOptions","defaultOptions","getQueryDefaults","add","push","notify","type","remove","queryInMap","destroy","filter","x","clear","notifyManager","batch","forEach","getAll","find","arg1","arg2","filters","parseFilterArgs","exact","matchQuery","findAll","Object","keys","length","event","listeners","listener","onFocus","onOnline"],"mappings":"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"}