UNPKG

@speckle/apollo-composable

Version:

Apollo GraphQL for Vue Composition API

997 lines (980 loc) 31.1 kB
var __create = Object.create; var __defProp = Object.defineProperty; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __markAsModule = (target) => __defProp(target, "__esModule", {value: true}); var __export = (target, all) => { for (var name in all) __defProp(target, name, {get: all[name], enumerable: true}); }; var __exportStar = (target, module2, desc) => { if (module2 && typeof module2 === "object" || typeof module2 === "function") { for (let key of __getOwnPropNames(module2)) if (!__hasOwnProp.call(target, key) && key !== "default") __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable}); } return target; }; var __toModule = (module2) => { return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2); }; // src/index.ts __markAsModule(exports); __export(exports, { ApolloClients: () => ApolloClients, DefaultApolloClient: () => DefaultApolloClient, provideApolloClient: () => provideApolloClient, provideApolloClients: () => provideApolloClients, useApolloClient: () => useApolloClient, useGlobalMutationLoading: () => useGlobalMutationLoading, useGlobalQueryLoading: () => useGlobalQueryLoading, useGlobalSubscriptionLoading: () => useGlobalSubscriptionLoading, useLazyQuery: () => useLazyQuery, useMutation: () => useMutation, useMutationLoading: () => useMutationLoading, useQuery: () => useQuery, useQueryLoading: () => useQueryLoading, useResult: () => useResult, useSubscription: () => useSubscription, useSubscriptionLoading: () => useSubscriptionLoading }); // src/useQuery.ts var import_vue_demi5 = __toModule(require("vue-demi")); var import_throttle_debounce = __toModule(require("throttle-debounce")); // src/useApolloClient.ts var import_vue_demi = __toModule(require("vue-demi")); var DefaultApolloClient = Symbol("default-apollo-client"); var ApolloClients = Symbol("apollo-clients"); function resolveDefaultClient(providedApolloClients, providedApolloClient) { const resolvedClient = providedApolloClients ? providedApolloClients.default : providedApolloClient != null ? providedApolloClient : void 0; return resolvedClient; } function resolveClientWithId(providedApolloClients, clientId) { return providedApolloClients == null ? void 0 : providedApolloClients[clientId]; } function useApolloClient(clientId) { let resolveImpl; const savedCurrentClients = currentApolloClients; if (!(0, import_vue_demi.hasInjectionContext)()) { resolveImpl = (id) => { if (id) { return resolveClientWithId(savedCurrentClients, id); } return resolveDefaultClient(savedCurrentClients, savedCurrentClients.default); }; } else { const providedApolloClients = (0, import_vue_demi.inject)(ApolloClients, null); const providedApolloClient = (0, import_vue_demi.inject)(DefaultApolloClient, null); resolveImpl = (id) => { if (id) { const client2 = resolveClientWithId(providedApolloClients, id); if (client2) { return client2; } return resolveClientWithId(savedCurrentClients, id); } const client = resolveDefaultClient(providedApolloClients, providedApolloClient); if (client) { return client; } return resolveDefaultClient(savedCurrentClients, savedCurrentClients.default); }; } function resolveClient(id = clientId) { const client = resolveImpl(id); if (!client) { throw new Error(`Apollo client with id ${id != null ? id : "default"} not found. Use an app.runWithContext() or provideApolloClient() if you are outside of a component setup.`); } return client; } return { resolveClient, get client() { return resolveClient(); } }; } var currentApolloClients = {}; function provideApolloClient(client) { currentApolloClients = { default: client }; return function(fn) { const result = fn(); currentApolloClients = {}; return result; }; } function provideApolloClients(clients) { currentApolloClients = clients; return function(fn) { const result = fn(); currentApolloClients = {}; return result; }; } // src/util/paramToRef.ts var import_vue_demi2 = __toModule(require("vue-demi")); function paramToRef(param) { if ((0, import_vue_demi2.isRef)(param)) { return param; } else if (typeof param === "function") { return (0, import_vue_demi2.computed)(param); } else { return (0, import_vue_demi2.ref)(param); } } // src/util/paramToReactive.ts var import_vue_demi3 = __toModule(require("vue-demi")); function paramToReactive(param) { if ((0, import_vue_demi3.isRef)(param)) { return param; } else if (typeof param === "function") { return (0, import_vue_demi3.computed)(param); } else if (param) { return (0, import_vue_demi3.reactive)(param); } else { return param; } } // src/util/useEventHook.ts function useEventHook() { const fns = []; function on(fn) { fns.push(fn); return { off: () => off(fn) }; } function off(fn) { const index = fns.indexOf(fn); if (index !== -1) { fns.splice(index, 1); } } function trigger(...params) { for (const fn of fns) { fn(...params); } } function getCount() { return fns.length; } return { on, off, trigger, getCount }; } // src/util/loadingTracking.ts var import_vue_demi4 = __toModule(require("vue-demi")); // src/util/env.ts var isServer = typeof window === "undefined"; // src/util/loadingTracking.ts var globalTracking = { queries: (0, import_vue_demi4.ref)(0), mutations: (0, import_vue_demi4.ref)(0), subscriptions: (0, import_vue_demi4.ref)(0), components: new Map() }; function getCurrentTracking() { const currentScope = (0, import_vue_demi4.getCurrentScope)(); if (!currentScope) { return {}; } let tracking; if (isServer) { tracking = { queries: (0, import_vue_demi4.ref)(0), mutations: (0, import_vue_demi4.ref)(0), subscriptions: (0, import_vue_demi4.ref)(0) }; return {tracking}; } if (!globalTracking.components.has(currentScope)) { globalTracking.components.set(currentScope, tracking = { queries: (0, import_vue_demi4.ref)(0), mutations: (0, import_vue_demi4.ref)(0), subscriptions: (0, import_vue_demi4.ref)(0) }); (0, import_vue_demi4.onScopeDispose)(() => { globalTracking.components.delete(currentScope); }); } else { tracking = globalTracking.components.get(currentScope); } return { tracking }; } function track(loading, type) { if (isServer) return; const {tracking} = getCurrentTracking(); (0, import_vue_demi4.watch)(loading, (value, oldValue) => { if (oldValue != null && value !== oldValue) { const mod = value ? 1 : -1; if (tracking) tracking[type].value += mod; globalTracking[type].value += mod; } }, { immediate: true }); (0, import_vue_demi4.onScopeDispose)(() => { if (loading.value) { if (tracking) tracking[type].value--; globalTracking[type].value--; } }); } function trackQuery(loading) { track(loading, "queries"); } function trackMutation(loading) { track(loading, "mutations"); } function trackSubscription(loading) { track(loading, "subscriptions"); } // src/util/toApolloError.ts var import_core = __toModule(require("@apollo/client/core/index.js")); function toApolloError(error) { if (!(error instanceof Error)) { return new import_core.ApolloError({ networkError: Object.assign(new Error(), {originalError: error}), errorMessage: String(error) }); } if ((0, import_core.isApolloError)(error)) { return error; } return new import_core.ApolloError({networkError: error, errorMessage: error.message}); } function resultErrorsToApolloError(errors) { return new import_core.ApolloError({ graphQLErrors: errors, errorMessage: `GraphQL response contains errors: ${errors.map((e) => e.message).join(" | ")}` }); } // src/useQuery.ts function useQuery(document, variables, options) { return useQueryImpl(document, variables, options); } function useQueryImpl(document, variables, options = {}, lazy = false) { var _a; const currentScope = (0, import_vue_demi5.getCurrentScope)(); const currentInstance = (0, import_vue_demi5.getCurrentInstance)(); const currentOptions = (0, import_vue_demi5.ref)(); const documentRef = paramToRef(document); const variablesRef = paramToRef(variables); const optionsRef = paramToReactive(options); const result = (0, import_vue_demi5.shallowRef)(); const resultEvent = useEventHook(); const error = (0, import_vue_demi5.shallowRef)(null); const errorEvent = useEventHook(); const loading = (0, import_vue_demi5.ref)(false); currentScope && trackQuery(loading); const networkStatus = (0, import_vue_demi5.ref)(); let firstResolve; let firstResolveTriggered = false; let firstReject; let firstRejectError; const tryFirstResolve = () => { firstResolveTriggered = true; if (firstResolve) firstResolve(); }; const tryFirstReject = (apolloError) => { firstRejectError = apolloError; if (firstReject) firstReject(apolloError); }; const resetFirstResolveReject = () => { firstResolve = void 0; firstReject = void 0; firstResolveTriggered = false; firstRejectError = void 0; }; currentInstance && ((_a = import_vue_demi5.onServerPrefetch) == null ? void 0 : _a(() => { var _a2; if (!isEnabled.value || isServer && ((_a2 = currentOptions.value) == null ? void 0 : _a2.prefetch) === false) return; return new Promise((resolve, reject) => { firstResolve = () => { resetFirstResolveReject(); resolve(); }; firstReject = (apolloError) => { resetFirstResolveReject(); reject(apolloError); }; if (firstResolveTriggered) { firstResolve(); } else if (firstRejectError) { firstReject(firstRejectError); } }).finally(stop); })); const {resolveClient} = useApolloClient(); function getClient() { var _a2; return resolveClient((_a2 = currentOptions.value) == null ? void 0 : _a2.clientId); } const query = (0, import_vue_demi5.shallowRef)(); let observer; let started = false; let ignoreNextResult = false; let firstStart = true; function start() { var _a2, _b, _c, _d, _e; if (started || !isEnabled.value || isServer && ((_a2 = currentOptions.value) == null ? void 0 : _a2.prefetch) === false || !currentDocument) { tryFirstResolve(); return; } if (isServer) { applyDocument(documentRef.value); applyVariables(variablesRef.value); applyOptions((0, import_vue_demi5.unref)(optionsRef)); } started = true; error.value = null; loading.value = true; const client = getClient(); query.value = client.watchQuery({ query: currentDocument, variables: currentVariables != null ? currentVariables : {}, ...currentOptions.value, ...isServer && ((_b = currentOptions.value) == null ? void 0 : _b.fetchPolicy) !== "no-cache" ? { fetchPolicy: "network-only" } : {} }); startQuerySubscription(); if (!isServer && (firstStart || !((_c = currentOptions.value) == null ? void 0 : _c.keepPreviousResult)) && (((_d = currentOptions.value) == null ? void 0 : _d.fetchPolicy) !== "no-cache" || currentOptions.value.notifyOnNetworkStatusChange)) { const currentResult = query.value.getCurrentResult(false); if (!currentResult.loading || currentResult.partial || ((_e = currentOptions.value) == null ? void 0 : _e.notifyOnNetworkStatusChange)) { onNextResult(currentResult); ignoreNextResult = !currentResult.loading; } else if (currentResult.error) { onError(currentResult.error); ignoreNextResult = true; } } if (!isServer) { for (const item of subscribeToMoreItems) { addSubscribeToMore(item); } } firstStart = false; } function startQuerySubscription() { if (observer && !observer.closed) return; if (!query.value) return; ignoreNextResult = false; observer = query.value.subscribe({ next: onNextResult, error: onError }); } function getErrorPolicy() { var _a2, _b, _c, _d; const client = resolveClient((_a2 = currentOptions.value) == null ? void 0 : _a2.clientId); return ((_b = currentOptions.value) == null ? void 0 : _b.errorPolicy) || ((_d = (_c = client.defaultOptions) == null ? void 0 : _c.watchQuery) == null ? void 0 : _d.errorPolicy); } function onNextResult(queryResult) { var _a2; if (ignoreNextResult) { ignoreNextResult = false; return; } error.value = null; processNextResult(queryResult); const errorPolicy = getErrorPolicy(); if (errorPolicy && errorPolicy === "all" && !queryResult.error && ((_a2 = queryResult.errors) == null ? void 0 : _a2.length)) { processError(resultErrorsToApolloError(queryResult.errors)); } tryFirstResolve(); } function processNextResult(queryResult) { var _a2, _b; result.value = queryResult.data && Object.keys(queryResult.data).length === 0 ? queryResult.error && !((_a2 = currentOptions.value) == null ? void 0 : _a2.returnPartialData) && ((_b = currentOptions.value) == null ? void 0 : _b.errorPolicy) === "none" ? void 0 : result.value : queryResult.data; loading.value = queryResult.loading; networkStatus.value = queryResult.networkStatus; (0, import_vue_demi5.nextTick)(() => { resultEvent.trigger(queryResult, { client: getClient() }); }); } function onError(queryError) { if (ignoreNextResult) { ignoreNextResult = false; return; } const apolloError = toApolloError(queryError); const errorPolicy = getErrorPolicy(); if (errorPolicy && errorPolicy !== "none") { processNextResult(query.value.getCurrentResult()); } processError(apolloError); tryFirstReject(apolloError); resubscribeToQuery(); } function processError(apolloError) { error.value = apolloError; loading.value = false; networkStatus.value = 8; (0, import_vue_demi5.nextTick)(() => { errorEvent.trigger(apolloError, { client: getClient() }); }); } function resubscribeToQuery() { if (!query.value) return; const lastError = query.value.getLastError(); const lastResult = query.value.getLastResult(); query.value.resetLastResults(); startQuerySubscription(); Object.assign(query.value, {lastError, lastResult}); } let onStopHandlers = []; function stop() { tryFirstResolve(); if (!started) return; started = false; loading.value = false; onStopHandlers.forEach((handler) => handler()); onStopHandlers = []; if (query.value) { query.value.stopPolling(); query.value = null; } if (observer) { observer.unsubscribe(); observer = void 0; } } let restarting = false; function baseRestart() { if (!started || restarting) return; restarting = true; (0, import_vue_demi5.nextTick)(() => { if (started) { stop(); start(); } restarting = false; }); } let debouncedRestart; let isRestartDebounceSetup = false; function updateRestartFn() { var _a2, _b; if (!currentOptions.value) { debouncedRestart = baseRestart; } else { if ((_a2 = currentOptions.value) == null ? void 0 : _a2.throttle) { debouncedRestart = (0, import_throttle_debounce.throttle)(currentOptions.value.throttle, baseRestart); } else if ((_b = currentOptions.value) == null ? void 0 : _b.debounce) { debouncedRestart = (0, import_throttle_debounce.debounce)(currentOptions.value.debounce, baseRestart); } else { debouncedRestart = baseRestart; } isRestartDebounceSetup = true; } } function restart() { if (!started || restarting) return; if (!isRestartDebounceSetup) updateRestartFn(); debouncedRestart(); } let currentDocument = documentRef.value; const forceDisabled = (0, import_vue_demi5.ref)(lazy); const enabledOption = (0, import_vue_demi5.computed)(() => !currentOptions.value || currentOptions.value.enabled == null || currentOptions.value.enabled); const isEnabled = (0, import_vue_demi5.computed)(() => enabledOption.value && !forceDisabled.value && !!documentRef.value); (0, import_vue_demi5.watch)(() => (0, import_vue_demi5.unref)(optionsRef), applyOptions, { deep: true, immediate: true }); function applyOptions(value) { if (currentOptions.value && (currentOptions.value.throttle !== value.throttle || currentOptions.value.debounce !== value.debounce)) { updateRestartFn(); } currentOptions.value = value; restart(); } (0, import_vue_demi5.watch)(documentRef, applyDocument); function applyDocument(value) { currentDocument = value; restart(); } let currentVariables; let currentVariablesSerialized; (0, import_vue_demi5.watch)(() => { if (isEnabled.value) { return variablesRef.value; } else { return void 0; } }, applyVariables, { deep: true, immediate: true }); function applyVariables(value) { const serialized = JSON.stringify([value, isEnabled.value]); if (serialized !== currentVariablesSerialized) { currentVariables = value; restart(); } currentVariablesSerialized = serialized; } function refetch(variables2 = void 0) { if (query.value) { if (variables2) { currentVariables = variables2; } error.value = null; loading.value = true; return query.value.refetch(variables2).then((refetchResult) => { var _a2; const currentResult = (_a2 = query.value) == null ? void 0 : _a2.getCurrentResult(); currentResult && processNextResult(currentResult); return refetchResult; }); } } function updateQuery(mapFn) { if (query.value) { query.value.updateQuery(mapFn); } } function fetchMore(options2) { if (query.value) { error.value = null; loading.value = true; return query.value.fetchMore(options2).then((fetchMoreResult) => { var _a2; const currentResult = (_a2 = query.value) == null ? void 0 : _a2.getCurrentResult(); currentResult && processNextResult(currentResult); return fetchMoreResult; }); } } const subscribeToMoreItems = []; function subscribeToMore(options2) { if (isServer) return; const optionsRef2 = paramToRef(options2); (0, import_vue_demi5.watch)(optionsRef2, (value, oldValue, onCleanup) => { const index = subscribeToMoreItems.findIndex((item2) => item2.options === oldValue); if (index !== -1) { subscribeToMoreItems.splice(index, 1); } const item = { options: value, unsubscribeFns: [] }; subscribeToMoreItems.push(item); addSubscribeToMore(item); onCleanup(() => { item.unsubscribeFns.forEach((fn) => fn()); item.unsubscribeFns = []; }); }, { immediate: true }); } function addSubscribeToMore(item) { if (!started) return; if (!query.value) { throw new Error("Query is not defined"); } const unsubscribe = query.value.subscribeToMore(item.options); onStopHandlers.push(unsubscribe); item.unsubscribeFns.push(unsubscribe); } (0, import_vue_demi5.watch)(isEnabled, (value) => { if (value) { (0, import_vue_demi5.nextTick)(() => { start(); }); } else { stop(); } }); if (isEnabled.value) { start(); } if (currentScope) { (0, import_vue_demi5.onScopeDispose)(() => { stop(); subscribeToMoreItems.length = 0; }); } else { console.warn("[Vue apollo] useQuery() is called outside of an active effect scope and the query will not be automatically stopped."); } return { result, loading, networkStatus, error, start, stop, restart, forceDisabled, document: documentRef, variables: variablesRef, options: optionsRef, query, refetch, fetchMore, subscribeToMore, updateQuery, onResult: resultEvent.on, onError: errorEvent.on }; } // src/useLazyQuery.ts var import_vue_demi6 = __toModule(require("vue-demi")); function useLazyQuery(document, variables, options) { const query = useQueryImpl(document, variables, options, true); function load(document2, variables2, options2) { if (document2) { query.document.value = document2; } if (variables2) { query.variables.value = variables2; } if (options2) { Object.assign((0, import_vue_demi6.isRef)(query.options) ? query.options.value : query.options, options2); } const isFirstRun = query.forceDisabled.value; if (isFirstRun) { query.forceDisabled.value = false; if (isServer) { query.start(); } return new Promise((resolve, reject) => { const {off: offResult} = query.onResult((result) => { if (!result.loading) { resolve(result.data); offResult(); offError(); } }); const {off: offError} = query.onError((error) => { reject(error); offResult(); offError(); }); }); } else { return false; } } return { ...query, load }; } // src/useMutation.ts var import_vue_demi7 = __toModule(require("vue-demi")); function useMutation(document, options = {}) { const currentScope = (0, import_vue_demi7.getCurrentScope)(); const loading = (0, import_vue_demi7.ref)(false); currentScope && trackMutation(loading); const error = (0, import_vue_demi7.shallowRef)(null); const called = (0, import_vue_demi7.ref)(false); const doneEvent = useEventHook(); const errorEvent = useEventHook(); const {resolveClient} = useApolloClient(); async function mutate(variables, overrideOptions = {}) { let currentDocument; if (typeof document === "function") { currentDocument = document(); } else if ((0, import_vue_demi7.isRef)(document)) { currentDocument = document.value; } else { currentDocument = document; } let currentOptions; if (typeof options === "function") { currentOptions = options(); } else if ((0, import_vue_demi7.isRef)(options)) { currentOptions = options.value; } else { currentOptions = options; } const client = resolveClient(currentOptions.clientId); error.value = null; loading.value = true; called.value = true; try { const result = await client.mutate({ mutation: currentDocument, ...currentOptions, ...overrideOptions, variables: (variables != null ? variables : currentOptions.variables) ? { ...currentOptions.variables, ...variables } : void 0 }); loading.value = false; await (0, import_vue_demi7.nextTick)(); doneEvent.trigger(result, { client }); return result; } catch (e) { const apolloError = toApolloError(e); error.value = apolloError; loading.value = false; errorEvent.trigger(apolloError, { client }); if (currentOptions.throws === "always" || currentOptions.throws !== "never" && !errorEvent.getCount()) { throw apolloError; } } return null; } currentScope && (0, import_vue_demi7.onScopeDispose)(() => { loading.value = false; }); return { mutate, loading, error, called, onDone: doneEvent.on, onError: errorEvent.on }; } // src/useSubscription.ts var import_vue_demi8 = __toModule(require("vue-demi")); var import_throttle_debounce2 = __toModule(require("throttle-debounce")); function useSubscription(document, variables = void 0, options = {}) { const currentScope = (0, import_vue_demi8.getCurrentScope)(); const documentRef = paramToRef(document); const variablesRef = paramToRef(variables); const optionsRef = paramToReactive(options); const result = (0, import_vue_demi8.shallowRef)(); const resultEvent = useEventHook(); const error = (0, import_vue_demi8.shallowRef)(null); const errorEvent = useEventHook(); const loading = (0, import_vue_demi8.ref)(false); currentScope && trackSubscription(loading); const {resolveClient} = useApolloClient(); const subscription = (0, import_vue_demi8.ref)(null); let observer = null; let started = false; function getClient() { var _a; return resolveClient((_a = currentOptions.value) == null ? void 0 : _a.clientId); } function start() { if (started || !isEnabled.value || isServer) return; started = true; loading.value = true; const client = getClient(); subscription.value = client.subscribe({ query: currentDocument, variables: currentVariables, ...currentOptions.value }); observer = subscription.value.subscribe({ next: onNextResult, error: onError }); } function onNextResult(fetchResult) { result.value = fetchResult.data; loading.value = false; resultEvent.trigger(fetchResult, { client: getClient() }); } function onError(fetchError) { const apolloError = toApolloError(fetchError); error.value = apolloError; loading.value = false; errorEvent.trigger(apolloError, { client: getClient() }); } function stop() { if (!started) return; started = false; loading.value = false; if (subscription.value) { subscription.value = null; } if (observer) { observer.unsubscribe(); observer = null; } } let restarting = false; function baseRestart() { if (!started || restarting) return; restarting = true; (0, import_vue_demi8.nextTick)(() => { if (started) { stop(); start(); } restarting = false; }); } let debouncedRestart; function updateRestartFn() { var _a, _b; if ((_a = currentOptions.value) == null ? void 0 : _a.throttle) { debouncedRestart = (0, import_throttle_debounce2.throttle)(currentOptions.value.throttle, baseRestart); } else if ((_b = currentOptions.value) == null ? void 0 : _b.debounce) { debouncedRestart = (0, import_throttle_debounce2.debounce)(currentOptions.value.debounce, baseRestart); } else { debouncedRestart = baseRestart; } } function restart() { if (!debouncedRestart) updateRestartFn(); debouncedRestart(); } const currentOptions = (0, import_vue_demi8.ref)(); (0, import_vue_demi8.watch)(() => (0, import_vue_demi8.isRef)(optionsRef) ? optionsRef.value : optionsRef, (value) => { if (currentOptions.value && (currentOptions.value.throttle !== value.throttle || currentOptions.value.debounce !== value.debounce)) { updateRestartFn(); } currentOptions.value = value; restart(); }, { deep: true, immediate: true }); let currentDocument; (0, import_vue_demi8.watch)(documentRef, (value) => { currentDocument = value; restart(); }, { immediate: true }); let currentVariables; let currentVariablesSerialized; (0, import_vue_demi8.watch)(variablesRef, (value, oldValue) => { const serialized = JSON.stringify(value); if (serialized !== currentVariablesSerialized) { currentVariables = value; restart(); } currentVariablesSerialized = serialized; }, { deep: true, immediate: true }); const enabledOption = (0, import_vue_demi8.computed)(() => !currentOptions.value || currentOptions.value.enabled == null || currentOptions.value.enabled); const isEnabled = enabledOption; (0, import_vue_demi8.watch)(isEnabled, (value) => { if (value) { start(); } else { stop(); } }, { immediate: true }); if (currentScope) { (0, import_vue_demi8.onScopeDispose)(stop); } else { console.warn("[Vue apollo] useSubscription() is called outside of an active effect scope and the subscription will not be automatically stopped."); } return { result, loading, error, start, stop, restart, document: documentRef, variables: variablesRef, options: optionsRef, subscription, onResult: resultEvent.on, onError: errorEvent.on }; } // src/useResult.ts var import_vue_demi9 = __toModule(require("vue-demi")); function useResult(result, defaultValue, pick) { console.warn(`'useResult' is deprecated and will be removed soon. Please use 'computed' instead. Before: const items = useResult(result, [], data => data.someField.myItems) After: const items = computed(() => result.value?.someField.myItems ?? [])`); return (0, import_vue_demi9.computed)(() => { const value = result.value; if (value) { if (pick) { try { return pick(value); } catch (e) { } } else { const keys = Object.keys(value); if (keys.length === 1) { return value[keys[0]]; } else { return value; } } } return defaultValue; }); } // src/useLoading.ts var import_vue_demi10 = __toModule(require("vue-demi")); function useQueryLoading() { const {tracking} = getCurrentTracking(); if (!tracking) throw new Error("useQueryLoading must be called inside a setup function."); return (0, import_vue_demi10.computed)(() => tracking.queries.value > 0); } function useMutationLoading() { const {tracking} = getCurrentTracking(); if (!tracking) throw new Error("useMutationLoading must be called inside a setup function."); return (0, import_vue_demi10.computed)(() => tracking.mutations.value > 0); } function useSubscriptionLoading() { const {tracking} = getCurrentTracking(); if (!tracking) throw new Error("useSubscriptionLoading must be called inside a setup function."); return (0, import_vue_demi10.computed)(() => tracking.subscriptions.value > 0); } function useGlobalQueryLoading() { return (0, import_vue_demi10.computed)(() => globalTracking.queries.value > 0); } function useGlobalMutationLoading() { return (0, import_vue_demi10.computed)(() => globalTracking.mutations.value > 0); } function useGlobalSubscriptionLoading() { return (0, import_vue_demi10.computed)(() => globalTracking.subscriptions.value > 0); } //# sourceMappingURL=index.js.map