UNPKG

@tanstack/vue-query

Version:

Hooks for managing, caching and syncing asynchronous and remote data in Vue

258 lines (257 loc) 7.95 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/devtools/devtools.ts var devtools_exports = {}; __export(devtools_exports, { setupDevtools: () => setupDevtools }); module.exports = __toCommonJS(devtools_exports); var import_devtools_api = require("@vue/devtools-api"); var import_match_sorter_utils = require("@tanstack/match-sorter-utils"); var import_query_core = require("@tanstack/query-core"); var import_utils = require("./utils.cjs"); var pluginId = "vue-query"; var pluginName = "Vue Query"; function setupDevtools(app, queryClient) { (0, import_devtools_api.setupDevtoolsPlugin)( { id: pluginId, label: pluginName, packageName: "vue-query", homepage: "https://tanstack.com/query/latest", logo: "https://raw.githubusercontent.com/TanStack/query/main/packages/vue-query/media/vue-query.svg", app, settings: { baseSort: { type: "choice", component: "button-group", label: "Sort Cache Entries", options: [ { label: "ASC", value: 1 }, { label: "DESC", value: -1 } ], defaultValue: 1 }, sortFn: { type: "choice", label: "Sort Function", options: Object.keys(import_utils.sortFns).map((key) => ({ label: key, value: key })), defaultValue: Object.keys(import_utils.sortFns)[0] }, onlineMode: { type: "choice", component: "button-group", label: "Online mode", options: [ { label: "Online", value: 1 }, { label: "Offline", value: 0 } ], defaultValue: 1 } } }, (api) => { const initialSettings = api.getSettings(); import_query_core.onlineManager.setOnline(Boolean(initialSettings.onlineMode.valueOf())); const queryCache = queryClient.getQueryCache(); api.addInspector({ id: pluginId, label: pluginName, icon: "api", nodeActions: [ { icon: "file_download", tooltip: "Refetch", action: (queryHash) => { var _a; (_a = queryCache.get(queryHash)) == null ? void 0 : _a.fetch(); } }, { icon: "alarm", tooltip: "Invalidate", action: (queryHash) => { const query = queryCache.get(queryHash); queryClient.invalidateQueries(query); } }, { icon: "settings_backup_restore", tooltip: "Reset", action: (queryHash) => { var _a; (_a = queryCache.get(queryHash)) == null ? void 0 : _a.reset(); } }, { icon: "delete", tooltip: "Remove", action: (queryHash) => { const query = queryCache.get(queryHash); queryCache.remove(query); } }, { icon: "hourglass_empty", tooltip: "Force loading", action: (queryHash) => { const query = queryCache.get(queryHash); query.setState({ data: void 0, status: "pending" }); } }, { icon: "error_outline", tooltip: "Force error", action: (queryHash) => { const query = queryCache.get(queryHash); query.setState({ data: void 0, status: "error", error: new Error("Unknown error from devtools") }); } } ] }); api.addTimelineLayer({ id: pluginId, label: pluginName, color: 16767308 }); queryCache.subscribe((event) => { api.sendInspectorTree(pluginId); api.sendInspectorState(pluginId); const queryEvents = [ "added", "removed", "updated" ]; if (queryEvents.includes(event.type)) { api.addTimelineEvent({ layerId: pluginId, event: { title: event.type, subtitle: event.query.queryHash, time: api.now(), data: { queryHash: event.query.queryHash, ...event } } }); } }); api.on.setPluginSettings((payload) => { if (payload.key === "onlineMode") { import_query_core.onlineManager.setOnline(Boolean(payload.newValue)); } }); api.on.getInspectorTree((payload) => { if (payload.inspectorId === pluginId) { const queries = queryCache.getAll(); const settings = api.getSettings(); const filtered = payload.filter ? queries.filter( (item) => (0, import_match_sorter_utils.rankItem)(item.queryHash, payload.filter).passed ) : [...queries]; const sorted = filtered.sort( (a, b) => import_utils.sortFns[settings.sortFn](a, b) * settings.baseSort ); const nodes = sorted.map((query) => { const stateLabel = (0, import_utils.getQueryStateLabel)(query); return { id: query.queryHash, label: query.queryHash, tags: [ { label: `${stateLabel} [${query.getObserversCount()}]`, textColor: (0, import_utils.getQueryStatusFg)(query), backgroundColor: (0, import_utils.getQueryStatusBg)(query) } ] }; }); payload.rootNodes = nodes; } }); api.on.getInspectorState((payload) => { if (payload.inspectorId === pluginId) { const query = queryCache.get(payload.nodeId); if (!query) { return; } payload.state = { " Query Details": [ { key: "Query key", value: query.queryHash }, { key: "Query status", value: (0, import_utils.getQueryStateLabel)(query) }, { key: "Observers", value: query.getObserversCount() }, { key: "Last Updated", value: new Date(query.state.dataUpdatedAt).toLocaleTimeString() } ], "Data Explorer": [ { key: "Data", value: query.state.data } ], "Query Explorer": [ { key: "Query", value: query } ] }; } }); } ); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { setupDevtools }); //# sourceMappingURL=devtools.cjs.map