@tanstack/vue-query 5.100.1 → 5.100.3

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.
@@ -104,7 +104,10 @@ function setupDevtools(app, queryClient) {
104
104
  tooltip: "Invalidate",
105
105
  action: (queryHash) => {
106
106
  const query = queryCache.get(queryHash);
107
- queryClient.invalidateQueries(query);
107
+ queryClient.invalidateQueries({
108
+ queryKey: query.queryKey,
109
+ exact: true
110
+ });
108
111
  }
109
112
  },
110
113
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/devtools/devtools.ts"],"sourcesContent":["import { setupDevtoolsPlugin } from '@vue/devtools-api'\nimport { rankItem } from '@tanstack/match-sorter-utils'\nimport { onlineManager } from '@tanstack/query-core'\nimport {\n getQueryStateLabel,\n getQueryStatusBg,\n getQueryStatusFg,\n sortFns,\n} from './utils'\nimport type { CustomInspectorNode } from '@vue/devtools-api'\nimport type { Query, QueryCacheNotifyEvent } from '@tanstack/query-core'\nimport type { QueryClient } from '../queryClient'\n\nconst pluginId = 'vue-query'\nconst pluginName = 'Vue Query'\n\nexport function setupDevtools(app: any, queryClient: QueryClient) {\n setupDevtoolsPlugin(\n {\n id: pluginId,\n label: pluginName,\n packageName: 'vue-query',\n homepage: 'https://tanstack.com/query/latest',\n logo: 'https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg',\n app,\n settings: {\n baseSort: {\n type: 'choice',\n component: 'button-group',\n label: 'Sort Cache Entries',\n options: [\n {\n label: 'ASC',\n value: 1,\n },\n {\n label: 'DESC',\n value: -1,\n },\n ],\n defaultValue: 1,\n },\n sortFn: {\n type: 'choice',\n label: 'Sort Function',\n options: Object.keys(sortFns).map((key) => ({\n label: key,\n value: key,\n })),\n defaultValue: Object.keys(sortFns)[0]!,\n },\n onlineMode: {\n type: 'choice',\n component: 'button-group',\n label: 'Online mode',\n options: [\n {\n label: 'Online',\n value: 1,\n },\n {\n label: 'Offline',\n value: 0,\n },\n ],\n defaultValue: 1,\n },\n },\n },\n (api) => {\n const initialSettings = api.getSettings()\n onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf()))\n\n const queryCache = queryClient.getQueryCache()\n\n api.addInspector({\n id: pluginId,\n label: pluginName,\n icon: 'api',\n nodeActions: [\n {\n icon: 'file_download',\n tooltip: 'Refetch',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.fetch()\n },\n },\n {\n icon: 'alarm',\n tooltip: 'Invalidate',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryClient.invalidateQueries(query)\n },\n },\n {\n icon: 'settings_backup_restore',\n tooltip: 'Reset',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.reset()\n },\n },\n {\n icon: 'delete',\n tooltip: 'Remove',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryCache.remove(query)\n },\n },\n {\n icon: 'hourglass_empty',\n tooltip: 'Force loading',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'pending',\n })\n },\n },\n {\n icon: 'error_outline',\n tooltip: 'Force error',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'error',\n error: new Error('Unknown error from devtools'),\n })\n },\n },\n ],\n })\n\n api.addTimelineLayer({\n id: pluginId,\n label: pluginName,\n color: 0xffd94c,\n })\n\n queryCache.subscribe((event) => {\n api.sendInspectorTree(pluginId)\n api.sendInspectorState(pluginId)\n\n const queryEvents: Array<QueryCacheNotifyEvent['type']> = [\n 'added',\n 'removed',\n 'updated',\n ]\n\n if (queryEvents.includes(event.type)) {\n api.addTimelineEvent({\n layerId: pluginId,\n event: {\n title: event.type,\n subtitle: event.query.queryHash,\n time: api.now(),\n data: {\n queryHash: event.query.queryHash,\n ...event,\n },\n },\n })\n }\n })\n\n api.on.setPluginSettings((payload) => {\n if (payload.key === 'onlineMode') {\n onlineManager.setOnline(Boolean(payload.newValue))\n }\n })\n\n api.on.getInspectorTree((payload) => {\n if (payload.inspectorId === pluginId) {\n const queries = queryCache.getAll()\n const settings = api.getSettings()\n\n const filtered = payload.filter\n ? queries.filter(\n (item) => rankItem(item.queryHash, payload.filter).passed,\n )\n : [...queries]\n\n const sorted = filtered.sort(\n (a, b) => sortFns[settings.sortFn]!(a, b) * settings.baseSort,\n )\n\n const nodes: Array<CustomInspectorNode> = sorted.map((query) => {\n const stateLabel = getQueryStateLabel(query)\n\n return {\n id: query.queryHash,\n label: query.queryHash,\n tags: [\n {\n label: `${stateLabel} [${query.getObserversCount()}]`,\n textColor: getQueryStatusFg(query),\n backgroundColor: getQueryStatusBg(query),\n },\n ],\n }\n })\n payload.rootNodes = nodes\n }\n })\n\n api.on.getInspectorState((payload) => {\n if (payload.inspectorId === pluginId) {\n const query = queryCache.get(payload.nodeId)\n\n if (!query) {\n return\n }\n\n payload.state = {\n ' Query Details': [\n {\n key: 'Query key',\n value: query.queryHash,\n },\n {\n key: 'Query status',\n value: getQueryStateLabel(query),\n },\n {\n key: 'Observers',\n value: query.getObserversCount(),\n },\n {\n key: 'Last Updated',\n value: new Date(query.state.dataUpdatedAt).toLocaleTimeString(),\n },\n ],\n 'Data Explorer': [\n {\n key: 'Data',\n value: query.state.data,\n },\n ],\n 'Query Explorer': [\n {\n key: 'Query',\n value: query,\n },\n ],\n }\n }\n })\n },\n )\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/devtools/devtools.ts"],"sourcesContent":["import { setupDevtoolsPlugin } from '@vue/devtools-api'\nimport { rankItem } from '@tanstack/match-sorter-utils'\nimport { onlineManager } from '@tanstack/query-core'\nimport {\n getQueryStateLabel,\n getQueryStatusBg,\n getQueryStatusFg,\n sortFns,\n} from './utils'\nimport type { CustomInspectorNode } from '@vue/devtools-api'\nimport type { Query, QueryCacheNotifyEvent } from '@tanstack/query-core'\nimport type { QueryClient } from '../queryClient'\n\nconst pluginId = 'vue-query'\nconst pluginName = 'Vue Query'\n\nexport function setupDevtools(app: any, queryClient: QueryClient) {\n setupDevtoolsPlugin(\n {\n id: pluginId,\n label: pluginName,\n packageName: 'vue-query',\n homepage: 'https://tanstack.com/query/latest',\n logo: 'https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg',\n app,\n settings: {\n baseSort: {\n type: 'choice',\n component: 'button-group',\n label: 'Sort Cache Entries',\n options: [\n {\n label: 'ASC',\n value: 1,\n },\n {\n label: 'DESC',\n value: -1,\n },\n ],\n defaultValue: 1,\n },\n sortFn: {\n type: 'choice',\n label: 'Sort Function',\n options: Object.keys(sortFns).map((key) => ({\n label: key,\n value: key,\n })),\n defaultValue: Object.keys(sortFns)[0]!,\n },\n onlineMode: {\n type: 'choice',\n component: 'button-group',\n label: 'Online mode',\n options: [\n {\n label: 'Online',\n value: 1,\n },\n {\n label: 'Offline',\n value: 0,\n },\n ],\n defaultValue: 1,\n },\n },\n },\n (api) => {\n const initialSettings = api.getSettings()\n onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf()))\n\n const queryCache = queryClient.getQueryCache()\n\n api.addInspector({\n id: pluginId,\n label: pluginName,\n icon: 'api',\n nodeActions: [\n {\n icon: 'file_download',\n tooltip: 'Refetch',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.fetch()\n },\n },\n {\n icon: 'alarm',\n tooltip: 'Invalidate',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryClient.invalidateQueries({\n queryKey: query.queryKey,\n exact: true,\n })\n },\n },\n {\n icon: 'settings_backup_restore',\n tooltip: 'Reset',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.reset()\n },\n },\n {\n icon: 'delete',\n tooltip: 'Remove',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryCache.remove(query)\n },\n },\n {\n icon: 'hourglass_empty',\n tooltip: 'Force loading',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'pending',\n })\n },\n },\n {\n icon: 'error_outline',\n tooltip: 'Force error',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'error',\n error: new Error('Unknown error from devtools'),\n })\n },\n },\n ],\n })\n\n api.addTimelineLayer({\n id: pluginId,\n label: pluginName,\n color: 0xffd94c,\n })\n\n queryCache.subscribe((event) => {\n api.sendInspectorTree(pluginId)\n api.sendInspectorState(pluginId)\n\n const queryEvents: Array<QueryCacheNotifyEvent['type']> = [\n 'added',\n 'removed',\n 'updated',\n ]\n\n if (queryEvents.includes(event.type)) {\n api.addTimelineEvent({\n layerId: pluginId,\n event: {\n title: event.type,\n subtitle: event.query.queryHash,\n time: api.now(),\n data: {\n queryHash: event.query.queryHash,\n ...event,\n },\n },\n })\n }\n })\n\n api.on.setPluginSettings((payload) => {\n if (payload.key === 'onlineMode') {\n onlineManager.setOnline(Boolean(payload.newValue))\n }\n })\n\n api.on.getInspectorTree((payload) => {\n if (payload.inspectorId === pluginId) {\n const queries = queryCache.getAll()\n const settings = api.getSettings()\n\n const filtered = payload.filter\n ? queries.filter(\n (item) => rankItem(item.queryHash, payload.filter).passed,\n )\n : [...queries]\n\n const sorted = filtered.sort(\n (a, b) => sortFns[settings.sortFn]!(a, b) * settings.baseSort,\n )\n\n const nodes: Array<CustomInspectorNode> = sorted.map((query) => {\n const stateLabel = getQueryStateLabel(query)\n\n return {\n id: query.queryHash,\n label: query.queryHash,\n tags: [\n {\n label: `${stateLabel} [${query.getObserversCount()}]`,\n textColor: getQueryStatusFg(query),\n backgroundColor: getQueryStatusBg(query),\n },\n ],\n }\n })\n payload.rootNodes = nodes\n }\n })\n\n api.on.getInspectorState((payload) => {\n if (payload.inspectorId === pluginId) {\n const query = queryCache.get(payload.nodeId)\n\n if (!query) {\n return\n }\n\n payload.state = {\n ' Query Details': [\n {\n key: 'Query key',\n value: query.queryHash,\n },\n {\n key: 'Query status',\n value: getQueryStateLabel(query),\n },\n {\n key: 'Observers',\n value: query.getObserversCount(),\n },\n {\n key: 'Last Updated',\n value: new Date(query.state.dataUpdatedAt).toLocaleTimeString(),\n },\n ],\n 'Data Explorer': [\n {\n key: 'Data',\n value: query.state.data,\n },\n ],\n 'Query Explorer': [\n {\n key: 'Query',\n value: query,\n },\n ],\n }\n }\n })\n },\n )\n}\n"],"mappings":"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","names":[]}
@@ -85,7 +85,10 @@ function setupDevtools(app, queryClient) {
85
85
  tooltip: "Invalidate",
86
86
  action: (queryHash) => {
87
87
  const query = queryCache.get(queryHash);
88
- queryClient.invalidateQueries(query);
88
+ queryClient.invalidateQueries({
89
+ queryKey: query.queryKey,
90
+ exact: true
91
+ });
89
92
  }
90
93
  },
91
94
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/devtools/devtools.ts"],"sourcesContent":["import { setupDevtoolsPlugin } from '@vue/devtools-api'\nimport { rankItem } from '@tanstack/match-sorter-utils'\nimport { onlineManager } from '@tanstack/query-core'\nimport {\n getQueryStateLabel,\n getQueryStatusBg,\n getQueryStatusFg,\n sortFns,\n} from './utils'\nimport type { CustomInspectorNode } from '@vue/devtools-api'\nimport type { Query, QueryCacheNotifyEvent } from '@tanstack/query-core'\nimport type { QueryClient } from '../queryClient'\n\nconst pluginId = 'vue-query'\nconst pluginName = 'Vue Query'\n\nexport function setupDevtools(app: any, queryClient: QueryClient) {\n setupDevtoolsPlugin(\n {\n id: pluginId,\n label: pluginName,\n packageName: 'vue-query',\n homepage: 'https://tanstack.com/query/latest',\n logo: 'https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg',\n app,\n settings: {\n baseSort: {\n type: 'choice',\n component: 'button-group',\n label: 'Sort Cache Entries',\n options: [\n {\n label: 'ASC',\n value: 1,\n },\n {\n label: 'DESC',\n value: -1,\n },\n ],\n defaultValue: 1,\n },\n sortFn: {\n type: 'choice',\n label: 'Sort Function',\n options: Object.keys(sortFns).map((key) => ({\n label: key,\n value: key,\n })),\n defaultValue: Object.keys(sortFns)[0]!,\n },\n onlineMode: {\n type: 'choice',\n component: 'button-group',\n label: 'Online mode',\n options: [\n {\n label: 'Online',\n value: 1,\n },\n {\n label: 'Offline',\n value: 0,\n },\n ],\n defaultValue: 1,\n },\n },\n },\n (api) => {\n const initialSettings = api.getSettings()\n onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf()))\n\n const queryCache = queryClient.getQueryCache()\n\n api.addInspector({\n id: pluginId,\n label: pluginName,\n icon: 'api',\n nodeActions: [\n {\n icon: 'file_download',\n tooltip: 'Refetch',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.fetch()\n },\n },\n {\n icon: 'alarm',\n tooltip: 'Invalidate',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryClient.invalidateQueries(query)\n },\n },\n {\n icon: 'settings_backup_restore',\n tooltip: 'Reset',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.reset()\n },\n },\n {\n icon: 'delete',\n tooltip: 'Remove',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryCache.remove(query)\n },\n },\n {\n icon: 'hourglass_empty',\n tooltip: 'Force loading',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'pending',\n })\n },\n },\n {\n icon: 'error_outline',\n tooltip: 'Force error',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'error',\n error: new Error('Unknown error from devtools'),\n })\n },\n },\n ],\n })\n\n api.addTimelineLayer({\n id: pluginId,\n label: pluginName,\n color: 0xffd94c,\n })\n\n queryCache.subscribe((event) => {\n api.sendInspectorTree(pluginId)\n api.sendInspectorState(pluginId)\n\n const queryEvents: Array<QueryCacheNotifyEvent['type']> = [\n 'added',\n 'removed',\n 'updated',\n ]\n\n if (queryEvents.includes(event.type)) {\n api.addTimelineEvent({\n layerId: pluginId,\n event: {\n title: event.type,\n subtitle: event.query.queryHash,\n time: api.now(),\n data: {\n queryHash: event.query.queryHash,\n ...event,\n },\n },\n })\n }\n })\n\n api.on.setPluginSettings((payload) => {\n if (payload.key === 'onlineMode') {\n onlineManager.setOnline(Boolean(payload.newValue))\n }\n })\n\n api.on.getInspectorTree((payload) => {\n if (payload.inspectorId === pluginId) {\n const queries = queryCache.getAll()\n const settings = api.getSettings()\n\n const filtered = payload.filter\n ? queries.filter(\n (item) => rankItem(item.queryHash, payload.filter).passed,\n )\n : [...queries]\n\n const sorted = filtered.sort(\n (a, b) => sortFns[settings.sortFn]!(a, b) * settings.baseSort,\n )\n\n const nodes: Array<CustomInspectorNode> = sorted.map((query) => {\n const stateLabel = getQueryStateLabel(query)\n\n return {\n id: query.queryHash,\n label: query.queryHash,\n tags: [\n {\n label: `${stateLabel} [${query.getObserversCount()}]`,\n textColor: getQueryStatusFg(query),\n backgroundColor: getQueryStatusBg(query),\n },\n ],\n }\n })\n payload.rootNodes = nodes\n }\n })\n\n api.on.getInspectorState((payload) => {\n if (payload.inspectorId === pluginId) {\n const query = queryCache.get(payload.nodeId)\n\n if (!query) {\n return\n }\n\n payload.state = {\n ' Query Details': [\n {\n key: 'Query key',\n value: query.queryHash,\n },\n {\n key: 'Query status',\n value: getQueryStateLabel(query),\n },\n {\n key: 'Observers',\n value: query.getObserversCount(),\n },\n {\n key: 'Last Updated',\n value: new Date(query.state.dataUpdatedAt).toLocaleTimeString(),\n },\n ],\n 'Data Explorer': [\n {\n key: 'Data',\n value: query.state.data,\n },\n ],\n 'Query Explorer': [\n {\n key: 'Query',\n value: query,\n },\n ],\n }\n }\n })\n },\n )\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/devtools/devtools.ts"],"sourcesContent":["import { setupDevtoolsPlugin } from '@vue/devtools-api'\nimport { rankItem } from '@tanstack/match-sorter-utils'\nimport { onlineManager } from '@tanstack/query-core'\nimport {\n getQueryStateLabel,\n getQueryStatusBg,\n getQueryStatusFg,\n sortFns,\n} from './utils'\nimport type { CustomInspectorNode } from '@vue/devtools-api'\nimport type { Query, QueryCacheNotifyEvent } from '@tanstack/query-core'\nimport type { QueryClient } from '../queryClient'\n\nconst pluginId = 'vue-query'\nconst pluginName = 'Vue Query'\n\nexport function setupDevtools(app: any, queryClient: QueryClient) {\n setupDevtoolsPlugin(\n {\n id: pluginId,\n label: pluginName,\n packageName: 'vue-query',\n homepage: 'https://tanstack.com/query/latest',\n logo: 'https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg',\n app,\n settings: {\n baseSort: {\n type: 'choice',\n component: 'button-group',\n label: 'Sort Cache Entries',\n options: [\n {\n label: 'ASC',\n value: 1,\n },\n {\n label: 'DESC',\n value: -1,\n },\n ],\n defaultValue: 1,\n },\n sortFn: {\n type: 'choice',\n label: 'Sort Function',\n options: Object.keys(sortFns).map((key) => ({\n label: key,\n value: key,\n })),\n defaultValue: Object.keys(sortFns)[0]!,\n },\n onlineMode: {\n type: 'choice',\n component: 'button-group',\n label: 'Online mode',\n options: [\n {\n label: 'Online',\n value: 1,\n },\n {\n label: 'Offline',\n value: 0,\n },\n ],\n defaultValue: 1,\n },\n },\n },\n (api) => {\n const initialSettings = api.getSettings()\n onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf()))\n\n const queryCache = queryClient.getQueryCache()\n\n api.addInspector({\n id: pluginId,\n label: pluginName,\n icon: 'api',\n nodeActions: [\n {\n icon: 'file_download',\n tooltip: 'Refetch',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.fetch()\n },\n },\n {\n icon: 'alarm',\n tooltip: 'Invalidate',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryClient.invalidateQueries({\n queryKey: query.queryKey,\n exact: true,\n })\n },\n },\n {\n icon: 'settings_backup_restore',\n tooltip: 'Reset',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.reset()\n },\n },\n {\n icon: 'delete',\n tooltip: 'Remove',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryCache.remove(query)\n },\n },\n {\n icon: 'hourglass_empty',\n tooltip: 'Force loading',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'pending',\n })\n },\n },\n {\n icon: 'error_outline',\n tooltip: 'Force error',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'error',\n error: new Error('Unknown error from devtools'),\n })\n },\n },\n ],\n })\n\n api.addTimelineLayer({\n id: pluginId,\n label: pluginName,\n color: 0xffd94c,\n })\n\n queryCache.subscribe((event) => {\n api.sendInspectorTree(pluginId)\n api.sendInspectorState(pluginId)\n\n const queryEvents: Array<QueryCacheNotifyEvent['type']> = [\n 'added',\n 'removed',\n 'updated',\n ]\n\n if (queryEvents.includes(event.type)) {\n api.addTimelineEvent({\n layerId: pluginId,\n event: {\n title: event.type,\n subtitle: event.query.queryHash,\n time: api.now(),\n data: {\n queryHash: event.query.queryHash,\n ...event,\n },\n },\n })\n }\n })\n\n api.on.setPluginSettings((payload) => {\n if (payload.key === 'onlineMode') {\n onlineManager.setOnline(Boolean(payload.newValue))\n }\n })\n\n api.on.getInspectorTree((payload) => {\n if (payload.inspectorId === pluginId) {\n const queries = queryCache.getAll()\n const settings = api.getSettings()\n\n const filtered = payload.filter\n ? queries.filter(\n (item) => rankItem(item.queryHash, payload.filter).passed,\n )\n : [...queries]\n\n const sorted = filtered.sort(\n (a, b) => sortFns[settings.sortFn]!(a, b) * settings.baseSort,\n )\n\n const nodes: Array<CustomInspectorNode> = sorted.map((query) => {\n const stateLabel = getQueryStateLabel(query)\n\n return {\n id: query.queryHash,\n label: query.queryHash,\n tags: [\n {\n label: `${stateLabel} [${query.getObserversCount()}]`,\n textColor: getQueryStatusFg(query),\n backgroundColor: getQueryStatusBg(query),\n },\n ],\n }\n })\n payload.rootNodes = nodes\n }\n })\n\n api.on.getInspectorState((payload) => {\n if (payload.inspectorId === pluginId) {\n const query = queryCache.get(payload.nodeId)\n\n if (!query) {\n return\n }\n\n payload.state = {\n ' Query Details': [\n {\n key: 'Query key',\n value: query.queryHash,\n },\n {\n key: 'Query status',\n value: getQueryStateLabel(query),\n },\n {\n key: 'Observers',\n value: query.getObserversCount(),\n },\n {\n key: 'Last Updated',\n value: new Date(query.state.dataUpdatedAt).toLocaleTimeString(),\n },\n ],\n 'Data Explorer': [\n {\n key: 'Data',\n value: query.state.data,\n },\n ],\n 'Query Explorer': [\n {\n key: 'Query',\n value: query,\n },\n ],\n }\n }\n })\n },\n )\n}\n"],"mappings":"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","names":[]}
@@ -103,7 +103,10 @@ function setupDevtools(app, queryClient) {
103
103
  tooltip: "Invalidate",
104
104
  action: (queryHash) => {
105
105
  const query = queryCache.get(queryHash);
106
- queryClient.invalidateQueries(query);
106
+ queryClient.invalidateQueries({
107
+ queryKey: query.queryKey,
108
+ exact: true
109
+ });
107
110
  }
108
111
  },
109
112
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/devtools/devtools.ts"],"sourcesContent":["import { setupDevtoolsPlugin } from '@vue/devtools-api'\nimport { rankItem } from '@tanstack/match-sorter-utils'\nimport { onlineManager } from '@tanstack/query-core'\nimport {\n getQueryStateLabel,\n getQueryStatusBg,\n getQueryStatusFg,\n sortFns,\n} from './utils'\nimport type { CustomInspectorNode } from '@vue/devtools-api'\nimport type { Query, QueryCacheNotifyEvent } from '@tanstack/query-core'\nimport type { QueryClient } from '../queryClient'\n\nconst pluginId = 'vue-query'\nconst pluginName = 'Vue Query'\n\nexport function setupDevtools(app: any, queryClient: QueryClient) {\n setupDevtoolsPlugin(\n {\n id: pluginId,\n label: pluginName,\n packageName: 'vue-query',\n homepage: 'https://tanstack.com/query/latest',\n logo: 'https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg',\n app,\n settings: {\n baseSort: {\n type: 'choice',\n component: 'button-group',\n label: 'Sort Cache Entries',\n options: [\n {\n label: 'ASC',\n value: 1,\n },\n {\n label: 'DESC',\n value: -1,\n },\n ],\n defaultValue: 1,\n },\n sortFn: {\n type: 'choice',\n label: 'Sort Function',\n options: Object.keys(sortFns).map((key) => ({\n label: key,\n value: key,\n })),\n defaultValue: Object.keys(sortFns)[0]!,\n },\n onlineMode: {\n type: 'choice',\n component: 'button-group',\n label: 'Online mode',\n options: [\n {\n label: 'Online',\n value: 1,\n },\n {\n label: 'Offline',\n value: 0,\n },\n ],\n defaultValue: 1,\n },\n },\n },\n (api) => {\n const initialSettings = api.getSettings()\n onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf()))\n\n const queryCache = queryClient.getQueryCache()\n\n api.addInspector({\n id: pluginId,\n label: pluginName,\n icon: 'api',\n nodeActions: [\n {\n icon: 'file_download',\n tooltip: 'Refetch',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.fetch()\n },\n },\n {\n icon: 'alarm',\n tooltip: 'Invalidate',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryClient.invalidateQueries(query)\n },\n },\n {\n icon: 'settings_backup_restore',\n tooltip: 'Reset',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.reset()\n },\n },\n {\n icon: 'delete',\n tooltip: 'Remove',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryCache.remove(query)\n },\n },\n {\n icon: 'hourglass_empty',\n tooltip: 'Force loading',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'pending',\n })\n },\n },\n {\n icon: 'error_outline',\n tooltip: 'Force error',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'error',\n error: new Error('Unknown error from devtools'),\n })\n },\n },\n ],\n })\n\n api.addTimelineLayer({\n id: pluginId,\n label: pluginName,\n color: 0xffd94c,\n })\n\n queryCache.subscribe((event) => {\n api.sendInspectorTree(pluginId)\n api.sendInspectorState(pluginId)\n\n const queryEvents: Array<QueryCacheNotifyEvent['type']> = [\n 'added',\n 'removed',\n 'updated',\n ]\n\n if (queryEvents.includes(event.type)) {\n api.addTimelineEvent({\n layerId: pluginId,\n event: {\n title: event.type,\n subtitle: event.query.queryHash,\n time: api.now(),\n data: {\n queryHash: event.query.queryHash,\n ...event,\n },\n },\n })\n }\n })\n\n api.on.setPluginSettings((payload) => {\n if (payload.key === 'onlineMode') {\n onlineManager.setOnline(Boolean(payload.newValue))\n }\n })\n\n api.on.getInspectorTree((payload) => {\n if (payload.inspectorId === pluginId) {\n const queries = queryCache.getAll()\n const settings = api.getSettings()\n\n const filtered = payload.filter\n ? queries.filter(\n (item) => rankItem(item.queryHash, payload.filter).passed,\n )\n : [...queries]\n\n const sorted = filtered.sort(\n (a, b) => sortFns[settings.sortFn]!(a, b) * settings.baseSort,\n )\n\n const nodes: Array<CustomInspectorNode> = sorted.map((query) => {\n const stateLabel = getQueryStateLabel(query)\n\n return {\n id: query.queryHash,\n label: query.queryHash,\n tags: [\n {\n label: `${stateLabel} [${query.getObserversCount()}]`,\n textColor: getQueryStatusFg(query),\n backgroundColor: getQueryStatusBg(query),\n },\n ],\n }\n })\n payload.rootNodes = nodes\n }\n })\n\n api.on.getInspectorState((payload) => {\n if (payload.inspectorId === pluginId) {\n const query = queryCache.get(payload.nodeId)\n\n if (!query) {\n return\n }\n\n payload.state = {\n ' Query Details': [\n {\n key: 'Query key',\n value: query.queryHash,\n },\n {\n key: 'Query status',\n value: getQueryStateLabel(query),\n },\n {\n key: 'Observers',\n value: query.getObserversCount(),\n },\n {\n key: 'Last Updated',\n value: new Date(query.state.dataUpdatedAt).toLocaleTimeString(),\n },\n ],\n 'Data Explorer': [\n {\n key: 'Data',\n value: query.state.data,\n },\n ],\n 'Query Explorer': [\n {\n key: 'Query',\n value: query,\n },\n ],\n }\n }\n })\n },\n )\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/devtools/devtools.ts"],"sourcesContent":["import { setupDevtoolsPlugin } from '@vue/devtools-api'\nimport { rankItem } from '@tanstack/match-sorter-utils'\nimport { onlineManager } from '@tanstack/query-core'\nimport {\n getQueryStateLabel,\n getQueryStatusBg,\n getQueryStatusFg,\n sortFns,\n} from './utils'\nimport type { CustomInspectorNode } from '@vue/devtools-api'\nimport type { Query, QueryCacheNotifyEvent } from '@tanstack/query-core'\nimport type { QueryClient } from '../queryClient'\n\nconst pluginId = 'vue-query'\nconst pluginName = 'Vue Query'\n\nexport function setupDevtools(app: any, queryClient: QueryClient) {\n setupDevtoolsPlugin(\n {\n id: pluginId,\n label: pluginName,\n packageName: 'vue-query',\n homepage: 'https://tanstack.com/query/latest',\n logo: 'https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg',\n app,\n settings: {\n baseSort: {\n type: 'choice',\n component: 'button-group',\n label: 'Sort Cache Entries',\n options: [\n {\n label: 'ASC',\n value: 1,\n },\n {\n label: 'DESC',\n value: -1,\n },\n ],\n defaultValue: 1,\n },\n sortFn: {\n type: 'choice',\n label: 'Sort Function',\n options: Object.keys(sortFns).map((key) => ({\n label: key,\n value: key,\n })),\n defaultValue: Object.keys(sortFns)[0]!,\n },\n onlineMode: {\n type: 'choice',\n component: 'button-group',\n label: 'Online mode',\n options: [\n {\n label: 'Online',\n value: 1,\n },\n {\n label: 'Offline',\n value: 0,\n },\n ],\n defaultValue: 1,\n },\n },\n },\n (api) => {\n const initialSettings = api.getSettings()\n onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf()))\n\n const queryCache = queryClient.getQueryCache()\n\n api.addInspector({\n id: pluginId,\n label: pluginName,\n icon: 'api',\n nodeActions: [\n {\n icon: 'file_download',\n tooltip: 'Refetch',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.fetch()\n },\n },\n {\n icon: 'alarm',\n tooltip: 'Invalidate',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryClient.invalidateQueries({\n queryKey: query.queryKey,\n exact: true,\n })\n },\n },\n {\n icon: 'settings_backup_restore',\n tooltip: 'Reset',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.reset()\n },\n },\n {\n icon: 'delete',\n tooltip: 'Remove',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryCache.remove(query)\n },\n },\n {\n icon: 'hourglass_empty',\n tooltip: 'Force loading',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'pending',\n })\n },\n },\n {\n icon: 'error_outline',\n tooltip: 'Force error',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'error',\n error: new Error('Unknown error from devtools'),\n })\n },\n },\n ],\n })\n\n api.addTimelineLayer({\n id: pluginId,\n label: pluginName,\n color: 0xffd94c,\n })\n\n queryCache.subscribe((event) => {\n api.sendInspectorTree(pluginId)\n api.sendInspectorState(pluginId)\n\n const queryEvents: Array<QueryCacheNotifyEvent['type']> = [\n 'added',\n 'removed',\n 'updated',\n ]\n\n if (queryEvents.includes(event.type)) {\n api.addTimelineEvent({\n layerId: pluginId,\n event: {\n title: event.type,\n subtitle: event.query.queryHash,\n time: api.now(),\n data: {\n queryHash: event.query.queryHash,\n ...event,\n },\n },\n })\n }\n })\n\n api.on.setPluginSettings((payload) => {\n if (payload.key === 'onlineMode') {\n onlineManager.setOnline(Boolean(payload.newValue))\n }\n })\n\n api.on.getInspectorTree((payload) => {\n if (payload.inspectorId === pluginId) {\n const queries = queryCache.getAll()\n const settings = api.getSettings()\n\n const filtered = payload.filter\n ? queries.filter(\n (item) => rankItem(item.queryHash, payload.filter).passed,\n )\n : [...queries]\n\n const sorted = filtered.sort(\n (a, b) => sortFns[settings.sortFn]!(a, b) * settings.baseSort,\n )\n\n const nodes: Array<CustomInspectorNode> = sorted.map((query) => {\n const stateLabel = getQueryStateLabel(query)\n\n return {\n id: query.queryHash,\n label: query.queryHash,\n tags: [\n {\n label: `${stateLabel} [${query.getObserversCount()}]`,\n textColor: getQueryStatusFg(query),\n backgroundColor: getQueryStatusBg(query),\n },\n ],\n }\n })\n payload.rootNodes = nodes\n }\n })\n\n api.on.getInspectorState((payload) => {\n if (payload.inspectorId === pluginId) {\n const query = queryCache.get(payload.nodeId)\n\n if (!query) {\n return\n }\n\n payload.state = {\n ' Query Details': [\n {\n key: 'Query key',\n value: query.queryHash,\n },\n {\n key: 'Query status',\n value: getQueryStateLabel(query),\n },\n {\n key: 'Observers',\n value: query.getObserversCount(),\n },\n {\n key: 'Last Updated',\n value: new Date(query.state.dataUpdatedAt).toLocaleTimeString(),\n },\n ],\n 'Data Explorer': [\n {\n key: 'Data',\n value: query.state.data,\n },\n ],\n 'Query Explorer': [\n {\n key: 'Query',\n value: query,\n },\n ],\n }\n }\n })\n },\n )\n}\n"],"mappings":"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","names":[]}
@@ -84,7 +84,10 @@ function setupDevtools(app, queryClient) {
84
84
  tooltip: "Invalidate",
85
85
  action: (queryHash) => {
86
86
  const query = queryCache.get(queryHash);
87
- queryClient.invalidateQueries(query);
87
+ queryClient.invalidateQueries({
88
+ queryKey: query.queryKey,
89
+ exact: true
90
+ });
88
91
  }
89
92
  },
90
93
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/devtools/devtools.ts"],"sourcesContent":["import { setupDevtoolsPlugin } from '@vue/devtools-api'\nimport { rankItem } from '@tanstack/match-sorter-utils'\nimport { onlineManager } from '@tanstack/query-core'\nimport {\n getQueryStateLabel,\n getQueryStatusBg,\n getQueryStatusFg,\n sortFns,\n} from './utils'\nimport type { CustomInspectorNode } from '@vue/devtools-api'\nimport type { Query, QueryCacheNotifyEvent } from '@tanstack/query-core'\nimport type { QueryClient } from '../queryClient'\n\nconst pluginId = 'vue-query'\nconst pluginName = 'Vue Query'\n\nexport function setupDevtools(app: any, queryClient: QueryClient) {\n setupDevtoolsPlugin(\n {\n id: pluginId,\n label: pluginName,\n packageName: 'vue-query',\n homepage: 'https://tanstack.com/query/latest',\n logo: 'https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg',\n app,\n settings: {\n baseSort: {\n type: 'choice',\n component: 'button-group',\n label: 'Sort Cache Entries',\n options: [\n {\n label: 'ASC',\n value: 1,\n },\n {\n label: 'DESC',\n value: -1,\n },\n ],\n defaultValue: 1,\n },\n sortFn: {\n type: 'choice',\n label: 'Sort Function',\n options: Object.keys(sortFns).map((key) => ({\n label: key,\n value: key,\n })),\n defaultValue: Object.keys(sortFns)[0]!,\n },\n onlineMode: {\n type: 'choice',\n component: 'button-group',\n label: 'Online mode',\n options: [\n {\n label: 'Online',\n value: 1,\n },\n {\n label: 'Offline',\n value: 0,\n },\n ],\n defaultValue: 1,\n },\n },\n },\n (api) => {\n const initialSettings = api.getSettings()\n onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf()))\n\n const queryCache = queryClient.getQueryCache()\n\n api.addInspector({\n id: pluginId,\n label: pluginName,\n icon: 'api',\n nodeActions: [\n {\n icon: 'file_download',\n tooltip: 'Refetch',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.fetch()\n },\n },\n {\n icon: 'alarm',\n tooltip: 'Invalidate',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryClient.invalidateQueries(query)\n },\n },\n {\n icon: 'settings_backup_restore',\n tooltip: 'Reset',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.reset()\n },\n },\n {\n icon: 'delete',\n tooltip: 'Remove',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryCache.remove(query)\n },\n },\n {\n icon: 'hourglass_empty',\n tooltip: 'Force loading',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'pending',\n })\n },\n },\n {\n icon: 'error_outline',\n tooltip: 'Force error',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'error',\n error: new Error('Unknown error from devtools'),\n })\n },\n },\n ],\n })\n\n api.addTimelineLayer({\n id: pluginId,\n label: pluginName,\n color: 0xffd94c,\n })\n\n queryCache.subscribe((event) => {\n api.sendInspectorTree(pluginId)\n api.sendInspectorState(pluginId)\n\n const queryEvents: Array<QueryCacheNotifyEvent['type']> = [\n 'added',\n 'removed',\n 'updated',\n ]\n\n if (queryEvents.includes(event.type)) {\n api.addTimelineEvent({\n layerId: pluginId,\n event: {\n title: event.type,\n subtitle: event.query.queryHash,\n time: api.now(),\n data: {\n queryHash: event.query.queryHash,\n ...event,\n },\n },\n })\n }\n })\n\n api.on.setPluginSettings((payload) => {\n if (payload.key === 'onlineMode') {\n onlineManager.setOnline(Boolean(payload.newValue))\n }\n })\n\n api.on.getInspectorTree((payload) => {\n if (payload.inspectorId === pluginId) {\n const queries = queryCache.getAll()\n const settings = api.getSettings()\n\n const filtered = payload.filter\n ? queries.filter(\n (item) => rankItem(item.queryHash, payload.filter).passed,\n )\n : [...queries]\n\n const sorted = filtered.sort(\n (a, b) => sortFns[settings.sortFn]!(a, b) * settings.baseSort,\n )\n\n const nodes: Array<CustomInspectorNode> = sorted.map((query) => {\n const stateLabel = getQueryStateLabel(query)\n\n return {\n id: query.queryHash,\n label: query.queryHash,\n tags: [\n {\n label: `${stateLabel} [${query.getObserversCount()}]`,\n textColor: getQueryStatusFg(query),\n backgroundColor: getQueryStatusBg(query),\n },\n ],\n }\n })\n payload.rootNodes = nodes\n }\n })\n\n api.on.getInspectorState((payload) => {\n if (payload.inspectorId === pluginId) {\n const query = queryCache.get(payload.nodeId)\n\n if (!query) {\n return\n }\n\n payload.state = {\n ' Query Details': [\n {\n key: 'Query key',\n value: query.queryHash,\n },\n {\n key: 'Query status',\n value: getQueryStateLabel(query),\n },\n {\n key: 'Observers',\n value: query.getObserversCount(),\n },\n {\n key: 'Last Updated',\n value: new Date(query.state.dataUpdatedAt).toLocaleTimeString(),\n },\n ],\n 'Data Explorer': [\n {\n key: 'Data',\n value: query.state.data,\n },\n ],\n 'Query Explorer': [\n {\n key: 'Query',\n value: query,\n },\n ],\n }\n }\n })\n },\n )\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/devtools/devtools.ts"],"sourcesContent":["import { setupDevtoolsPlugin } from '@vue/devtools-api'\nimport { rankItem } from '@tanstack/match-sorter-utils'\nimport { onlineManager } from '@tanstack/query-core'\nimport {\n getQueryStateLabel,\n getQueryStatusBg,\n getQueryStatusFg,\n sortFns,\n} from './utils'\nimport type { CustomInspectorNode } from '@vue/devtools-api'\nimport type { Query, QueryCacheNotifyEvent } from '@tanstack/query-core'\nimport type { QueryClient } from '../queryClient'\n\nconst pluginId = 'vue-query'\nconst pluginName = 'Vue Query'\n\nexport function setupDevtools(app: any, queryClient: QueryClient) {\n setupDevtoolsPlugin(\n {\n id: pluginId,\n label: pluginName,\n packageName: 'vue-query',\n homepage: 'https://tanstack.com/query/latest',\n logo: 'https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg',\n app,\n settings: {\n baseSort: {\n type: 'choice',\n component: 'button-group',\n label: 'Sort Cache Entries',\n options: [\n {\n label: 'ASC',\n value: 1,\n },\n {\n label: 'DESC',\n value: -1,\n },\n ],\n defaultValue: 1,\n },\n sortFn: {\n type: 'choice',\n label: 'Sort Function',\n options: Object.keys(sortFns).map((key) => ({\n label: key,\n value: key,\n })),\n defaultValue: Object.keys(sortFns)[0]!,\n },\n onlineMode: {\n type: 'choice',\n component: 'button-group',\n label: 'Online mode',\n options: [\n {\n label: 'Online',\n value: 1,\n },\n {\n label: 'Offline',\n value: 0,\n },\n ],\n defaultValue: 1,\n },\n },\n },\n (api) => {\n const initialSettings = api.getSettings()\n onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf()))\n\n const queryCache = queryClient.getQueryCache()\n\n api.addInspector({\n id: pluginId,\n label: pluginName,\n icon: 'api',\n nodeActions: [\n {\n icon: 'file_download',\n tooltip: 'Refetch',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.fetch()\n },\n },\n {\n icon: 'alarm',\n tooltip: 'Invalidate',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryClient.invalidateQueries({\n queryKey: query.queryKey,\n exact: true,\n })\n },\n },\n {\n icon: 'settings_backup_restore',\n tooltip: 'Reset',\n action: (queryHash: string) => {\n queryCache.get(queryHash)?.reset()\n },\n },\n {\n icon: 'delete',\n tooltip: 'Remove',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n queryCache.remove(query)\n },\n },\n {\n icon: 'hourglass_empty',\n tooltip: 'Force loading',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'pending',\n })\n },\n },\n {\n icon: 'error_outline',\n tooltip: 'Force error',\n action: (queryHash: string) => {\n const query = queryCache.get(queryHash) as Query\n\n query.setState({\n data: undefined,\n status: 'error',\n error: new Error('Unknown error from devtools'),\n })\n },\n },\n ],\n })\n\n api.addTimelineLayer({\n id: pluginId,\n label: pluginName,\n color: 0xffd94c,\n })\n\n queryCache.subscribe((event) => {\n api.sendInspectorTree(pluginId)\n api.sendInspectorState(pluginId)\n\n const queryEvents: Array<QueryCacheNotifyEvent['type']> = [\n 'added',\n 'removed',\n 'updated',\n ]\n\n if (queryEvents.includes(event.type)) {\n api.addTimelineEvent({\n layerId: pluginId,\n event: {\n title: event.type,\n subtitle: event.query.queryHash,\n time: api.now(),\n data: {\n queryHash: event.query.queryHash,\n ...event,\n },\n },\n })\n }\n })\n\n api.on.setPluginSettings((payload) => {\n if (payload.key === 'onlineMode') {\n onlineManager.setOnline(Boolean(payload.newValue))\n }\n })\n\n api.on.getInspectorTree((payload) => {\n if (payload.inspectorId === pluginId) {\n const queries = queryCache.getAll()\n const settings = api.getSettings()\n\n const filtered = payload.filter\n ? queries.filter(\n (item) => rankItem(item.queryHash, payload.filter).passed,\n )\n : [...queries]\n\n const sorted = filtered.sort(\n (a, b) => sortFns[settings.sortFn]!(a, b) * settings.baseSort,\n )\n\n const nodes: Array<CustomInspectorNode> = sorted.map((query) => {\n const stateLabel = getQueryStateLabel(query)\n\n return {\n id: query.queryHash,\n label: query.queryHash,\n tags: [\n {\n label: `${stateLabel} [${query.getObserversCount()}]`,\n textColor: getQueryStatusFg(query),\n backgroundColor: getQueryStatusBg(query),\n },\n ],\n }\n })\n payload.rootNodes = nodes\n }\n })\n\n api.on.getInspectorState((payload) => {\n if (payload.inspectorId === pluginId) {\n const query = queryCache.get(payload.nodeId)\n\n if (!query) {\n return\n }\n\n payload.state = {\n ' Query Details': [\n {\n key: 'Query key',\n value: query.queryHash,\n },\n {\n key: 'Query status',\n value: getQueryStateLabel(query),\n },\n {\n key: 'Observers',\n value: query.getObserversCount(),\n },\n {\n key: 'Last Updated',\n value: new Date(query.state.dataUpdatedAt).toLocaleTimeString(),\n },\n ],\n 'Data Explorer': [\n {\n key: 'Data',\n value: query.state.data,\n },\n ],\n 'Query Explorer': [\n {\n key: 'Query',\n value: query,\n },\n ],\n }\n }\n })\n },\n )\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/vue-query",
3
- "version": "5.100.1",
3
+ "version": "5.100.3",
4
4
  "description": "Hooks for managing, caching and syncing asynchronous and remote data in Vue",
5
5
  "author": "Damian Osipiuk",
6
6
  "license": "MIT",
@@ -42,7 +42,7 @@
42
42
  "@tanstack/match-sorter-utils": "^8.19.4",
43
43
  "@vue/devtools-api": "^6.6.3",
44
44
  "vue-demi": "^0.14.10",
45
- "@tanstack/query-core": "5.100.1"
45
+ "@tanstack/query-core": "5.100.3"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@vitejs/plugin-vue": "^5.2.4",
@@ -90,7 +90,10 @@ export function setupDevtools(app: any, queryClient: QueryClient) {
90
90
  tooltip: 'Invalidate',
91
91
  action: (queryHash: string) => {
92
92
  const query = queryCache.get(queryHash) as Query
93
- queryClient.invalidateQueries(query)
93
+ queryClient.invalidateQueries({
94
+ queryKey: query.queryKey,
95
+ exact: true,
96
+ })
94
97
  },
95
98
  },
96
99
  {