@zeroin.earth/appwrite-graphql 23.0.0 → 23.0.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.
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +5 -1
- package/react-native/index.d.ts +16953 -0
- package/react-native/index.js +989 -0
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/AppwriteProvider.tsx","../src/useAppwrite.ts","../src/useQueryClient.ts","../src/useMutation.ts","../src/useQuery.ts","../src/useLazyQuery.ts","../src/useSuspenseQuery.ts","../src/client.ts","../src/query/Keys.ts","../src/account/queryOptions.ts","../src/account/useAccount.ts","../src/account/useCreateAnonymousSession.ts","../src/account/useCreateEmailToken.ts","../src/account/useCreateJWT.ts","../src/account/useCreateMagicURLToken.ts","../src/account/useCreateMfaAuthenticator.ts","../src/account/useCreateMfaChallenge.ts","../src/account/useCreateMfaRecoveryCodes.ts","../src/account/useCreateOAuth2Token.ts","../src/account/useCreatePhoneToken.ts","../src/account/useCreatePhoneVerification.ts","../src/account/useCreatePushTarget.ts","../src/account/useCreateSession.ts","../src/account/useCreateEmailVerification.ts","../src/account/useDeleteIdentity.ts","../src/account/useDeleteMfaAuthenticator.ts","../src/account/useDeletePushTarget.ts","../src/account/useDeleteSession.ts","../src/account/useDeleteSessions.ts","../src/account/useGetMfaRecoveryCodes.ts","../src/account/useGetPrefs.ts","../src/account/useGetSession.ts","../src/account/useListIdentities.ts","../src/account/useListMfaFactors.ts","../src/account/useListSessions.ts","../src/account/useLogin.ts","../src/account/useLogout.ts","../src/account/useLogs.ts","../src/account/usePasswordRecovery.ts","../src/account/useResetPassword.ts","../src/account/useSignUp.ts","../src/account/useUpdateEmail.ts","../src/account/useUpdateEmailVerification.ts","../src/account/useUpdateMagicURLSession.ts","../src/account/useUpdateMfa.ts","../src/account/useUpdateMfaAuthenticator.ts","../src/account/useUpdateMfaChallenge.ts","../src/account/useUpdateMfaRecoveryCodes.ts","../src/account/useUpdateName.ts","../src/account/useUpdatePassword.ts","../src/account/useUpdatePhone.ts","../src/account/useUpdatePhoneSession.ts","../src/account/useUpdatePhoneVerification.ts","../src/account/useUpdatePrefs.ts","../src/account/useUpdatePushTarget.ts","../src/account/useUpdateSession.ts","../src/account/useUpdateStatus.ts","../src/account/useVerification.ts","../src/avatars/useAvatarBrowser.ts","../src/avatars/useAvatarCreditCard.ts","../src/avatars/useAvatarFavicon.ts","../src/avatars/useAvatarFlag.ts","../src/avatars/useAvatarImage.ts","../src/avatars/useAvatarInitials.ts","../src/avatars/useAvatarQR.ts","../src/avatars/useAvatarScreenshot.ts","../src/databases/utils.ts","../src/databases/queryOptions.ts","../src/databases/useCollection.ts","../src/databases/useCollectionWithPagination.ts","../src/databases/useCreateDocument.ts","../src/databases/useCreateOperations.ts","../src/databases/useCreateTransaction.ts","../src/databases/useDecrementAttribute.ts","../src/databases/useDeleteDocument.ts","../src/databases/useDeleteTransaction.ts","../src/databases/useDocument.ts","../src/databases/useGetTransaction.ts","../src/databases/useIncrementAttribute.ts","../src/databases/useInfiniteCollection.ts","../src/databases/useListTransactions.ts","../src/offline/conflictResolution/resolve.ts","../src/offline/mutations/conflictAwareUpdate.ts","../src/databases/useUpdateDocument.ts","../src/databases/useUpdateTransaction.ts","../src/databases/useUpsertDocument.ts","../src/locale/useLocale.ts","../src/locale/useLocaleCodes.ts","../src/locale/useLocaleContinents.ts","../src/locale/useLocaleCountries.ts","../src/locale/useLocaleCountriesEU.ts","../src/locale/useLocaleCountriesPhones.ts","../src/locale/useLocaleCurrencies.ts","../src/locale/useLocaleLanguages.ts","../src/messaging/useCreateSubscriber.ts","../src/messaging/useDeleteSubscriber.ts","../src/storage/useFile.ts","../src/storage/useFileDownload.ts","../src/storage/useFilePreview.ts","../src/storage/useFileView.ts","../src/storage/useFiles.ts","../src/storage/useCreateFile.ts","../src/storage/useUpdateFile.ts","../src/storage/useDeleteFile.ts","../src/teams/queryOptions.ts","../src/teams/useTeam.ts","../src/teams/useTeams.ts","../src/teams/useTeamPrefs.ts","../src/teams/useTeamMembership.ts","../src/teams/useTeamMemberships.ts","../src/teams/useCreateTeam.ts","../src/teams/useUpdateTeamName.ts","../src/teams/useUpdateTeamPrefs.ts","../src/teams/useDeleteTeam.ts","../src/teams/useCreateMembership.ts","../src/teams/useUpdateMembership.ts","../src/teams/useUpdateMembershipStatus.ts","../src/teams/useDeleteMembership.ts","../src/query/QueryBuilder.ts","../node_modules/@tanstack/query-core/src/utils.ts","../node_modules/@tanstack/query-core/src/thenable.ts","../node_modules/@tanstack/query-core/src/hydration.ts","../node_modules/@tanstack/query-persist-client-core/src/persist.ts","../src/offline/mutations/registry.ts","../src/offline/createOfflineClient.ts","../src/offline/network/web.ts","../src/functions/useFunction.ts","../src/functions/useGetExecution.ts","../src/functions/useListExecutions.ts"],"names":["AppwriteContext","O","defaultQueryClient","QueryClient","AppwriteProvider","client","queryClient","persister","onCacheRestored","children","qc","PersistQueryClientProvider","mutation","query","ReactQueryDevtools","QueryClientProvider","useAppwrite","ctx","useContext","useQueryClient","QueryClientContext","useMutation","options","useReactMutation","useQuery","useReactQuery","useLazyQuery","useSuspenseQuery","useSuspenseReactQuery","graphqlObject","graphqlAppwrite","variables","data","errors","print","createAppwriteClient","endpoint","projectId","Client","Account","Avatars","Realtime","Storage","Graphql","Databases","Functions","Locale","Messaging","TablesDB","Teams","Keys","_Keys","segments","k","id","getAccount","gql","getAccountQuery","useLazyAccount","isActive","setIsActive","useState","queryResult","getAccountQueryOptions","useEffect","subscriptionPromise","subscribe","sub","useAccount","opts","realtime","Channel","response","event","account","produce","draft","castDraft","createAnonymousSession","useCreateAnonymousSession","graphql","createEmailToken","useCreateEmailToken","userId","email","phrase","accountCreateJWT","useCreateJWT","gcTime","useSuspenseCreateJWT","createMagicURLToken","useCreateMagicURLToken","url","accountCreateMfaAuthenticator","useCreateMfaAuthenticator","type","accountCreateMfaChallenge","useCreateMfaChallenge","factor","accountCreateMfaRecoveryCodes","useCreateMfaRecoveryCodes","useCreateOAuth2Token","provider","success","failure","scopes","createPhoneToken","useCreatePhoneToken","phone","createPhoneVerification","useCreatePhoneVerification","accountCreatePushTarget","useCreatePushTarget","targetId","identifier","providerId","createSession","useCreateSession","secret","createEmailVerification","useCreateEmailVerification","accountDeleteIdentity","useDeleteIdentity","identityId","deleteMFAAuthenticator","useDeleteMfaAuthenticator","accountDeletePushTarget","useDeletePushTarget","deleteSession","useDeleteSession","sessionId","deleteSessions","useDeleteSessions","getMFARecoveryCodes","useGetMfaRecoveryCodes","accountGetPrefs","useGetPrefs","getSession","useGetSession","accountListIdentities","useListIdentities","listMFAFactors","useListMfaFactors","accountListSessions","useListSessions","accountCreateEmailPasswordSession","useLogin","login","password","oAuthLogin","useLogout","accountListLogs","useLogs","queries","createRecovery","usePasswordRecovery","resetUrl","_","e","updateRecovery","useResetPassword","createAccount","verify","useSignUp","signUp","name","ID","verifyEmail","verifyUrl","accountUpdateEmail","useUpdateEmail","updateEmailVerification","useUpdateEmailVerification","updateMagicURLSession","useUpdateMagicURLSession","accountUpdateMFA","useUpdateMfa","mfa","updateMFAAuthenticator","useUpdateMfaAuthenticator","otp","accountUpdateMfaChallenge","useUpdateMfaChallenge","challengeId","accountUpdateMfaRecoveryCodes","useUpdateMfaRecoveryCodes","accountUpdateName","useUpdateName","mutationData","updatePassword","useUpdatePassword","oldPassword","accountUpdatePhone","useUpdatePhone","updatePhoneSession","useUpdatePhoneSession","updatePhoneVerification","useUpdatePhoneVerification","accountUpdatePrefs","useUpdatePrefs","prefs","accountUpdatePushTarget","useUpdatePushTarget","updateSession","useUpdateSession","accountUpdateStatus","useUpdateStatus","updateVerification","useVerification","useAvatarBrowser","code","width","height","quality","avatars","useMemo","useAvatarCreditCard","useAvatarFavicon","useAvatarFlag","useAvatarImage","useAvatarInitials","background","useAvatarQR","text","size","margin","download","useAvatarScreenshot","mergeFieldsQuery","fields","Query","getDocument","getDocumentQuery","databaseId","collectionId","documentId","transactionId","rawQueries","mergedQueries","listDocuments","getCollectionQuery","documents","document","useCollectionQueryConfig","useCollectionRealtime","queriesKey","operation","useCollection","config","collection","useSuspenseCollection","usePaginationState","limit","page","setPage","totalRef","useRef","offset","prevPage","currentOffset","newPage","maxPage","useCollectionWithPagination","nextPage","previousPage","handlePageChange","total","useSuspenseCollectionWithPagination","createDocument","useCreateDocument","permissions","result","documentKeyPrefix","createOperations","useCreateOperations","operations","createTransaction","useCreateTransaction","ttl","decrementDocumentAttribute","useDecrementAttribute","attribute","value","min","previousEntries","old","current","decrement","newValue","__","context","key","deleteDocument","useDeleteDocument","deleteTransaction","useDeleteTransaction","useDocumentQueryConfig","useDocumentRealtime","useDocument","useSuspenseDocument","getTransaction","useGetTransaction","incrementDocumentAttribute","useIncrementAttribute","max","increment","useInfiniteCollection","accumulated","setAccumulated","paginatedQueries","prev","expectedLength","hasNextPage","fetchNextPage","useCallback","reset","listTransactions","useListTransactions","resolveConflict","strategy","extractChangedFields","localChanges","remoteChanges","original","updated","changes","conflictAwareUpdate","conflictStrategy","baseSnapshot","m","resolvedData","remoteResult","fetchErrors","rawRemote","remote","local","updateDocument","newData","thing","useUpdateDocument","appwrite","wasOffline","error","baseSnapshotCopy","willPerformOfflineMutation","onlineManager","updateTransaction","useUpdateTransaction","commit","rollback","upsertDocument","useUpsertDocument","getLocale","useLocale","listLocaleCodes","useLocaleCodes","listContinents","useLocaleContinents","listCountries","useLocaleCountries","listCountriesEU","useLocaleCountriesEU","listCountriesPhones","useLocaleCountriesPhones","listCurrencies","useLocaleCurrencies","listLanguages","useLocaleLanguages","createSubscriber","useCreateSubscriber","subscriberId","topicId","deleteSubscriber","useDeleteSubscriber","getFile","useFile","bucketId","fileId","useFileDownload","token","storage","useFilePreview","gravity","borderWidth","borderColor","borderRadius","opacity","rotation","output","useFileView","listFiles","useFiles","search","useCreateFile","file","onProgress","updateFile","useUpdateFile","deleteFile","useDeleteFile","getTeam","teamQueryOptions","teamId","useTeam","listTeams","useTeams","getTeamPrefs","useTeamPrefs","getMembership","useTeamMembership","membershipId","listMemberships","useTeamMemberships","createTeam","useCreateTeam","roles","updateTeamName","useUpdateTeamName","updateTeamPrefs","useUpdateTeamPrefs","deleteTeam","useDeleteTeam","createMembership","useCreateMembership","updateMembership","useUpdateMembership","updateMembershipStatus","useUpdateMembershipStatus","deleteMembership","useDeleteMembership","QueryBuilder","_QueryBuilder","field","pattern","start","end","prefix","suffix","term","count","values","date","orQueries","fn","andQueries","latitude","longitude","distance","meters","points","q","noop","tryResolveSync","promise","defaultTransformerFn","dehydrateMutation","dehydrateQuery","serializeData","shouldRedactErrors","dehydratePromise","defaultShouldDehydrateMutation","defaultShouldDehydrateQuery","defaultShouldRedactErrors","dehydrate","filterMutation","mutations","filterQuery","hydrate","dehydratedState","mutationCache","queryCache","deserializeData","state","mutationOptions","queryKey","queryHash","meta","dehydratedAt","syncData","rawData","existingQueryIsPending","existingQueryIsFetching","hasNewerSyncData","_ignored","serializedState","cacheEventTypes","isCacheEventType","eventType","persistQueryClientRestore","maxAge","buster","hydrateOptions","persistedClient","expired","busted","err","persistQueryClientSave","dehydrateOptions","persistClient","persistQueryClientSubscribe","props","unsubscribeQueryCache","unsubscribeMutationCache","persistQueryClient","hasUnsubscribed","persistQueryClientUnsubscribe","unsubscribe","restorePromise","gqlMutation","resultKey","vars","mutationRegistry","hydrateMutationDefaults","entry","createOfflineClient","externalPersister","networkAdapter","throttleTime","createAsyncStoragePersister","isOnline","restored","restoredWithResume","webNetworkAdapter","callback","updateOnlineStatus","createExecution","getFunctionExecution","useCurrentExecution","currentExecution","currentFunction","enabled","useFunction","setCurrentExecution","setCurrentFunction","getExecution","functionId","body","async","path","method","headers","scheduledAt","_id","status","responseBody","useSuspenseFunction","useGetExecution","executionId","listExecutions","useListExecutions"],"mappings":"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","file":"index.cjs","sourcesContent":["import * as React from 'react'\nimport { type ReactNode } from 'react'\nimport type { Persister } from '@tanstack/query-persist-client-core'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools'\nimport { PersistQueryClientProvider } from '@tanstack/react-query-persist-client'\n\nimport type { AppwriteClient } from './client'\n\nexport const AppwriteContext = React.createContext<AppwriteClient | null>(null)\n\nconst defaultQueryClient = new QueryClient()\n\nexport function AppwriteProvider({\n client,\n queryClient,\n persister,\n onCacheRestored,\n children,\n}: {\n client: AppwriteClient\n queryClient?: QueryClient\n persister?: Persister\n onCacheRestored?: () => void\n children: ReactNode\n}) {\n const qc = queryClient ?? defaultQueryClient\n\n if (persister) {\n return (\n <PersistQueryClientProvider\n client={qc}\n persistOptions={{\n persister,\n dehydrateOptions: {\n shouldDehydrateMutation: (mutation) => mutation.state.isPaused,\n shouldDehydrateQuery: (query) => query.state.status === 'success',\n },\n }}\n onSuccess={() => {\n void qc.resumePausedMutations()\n onCacheRestored?.()\n }}\n >\n <AppwriteContext.Provider value={client}>{children}</AppwriteContext.Provider>\n <ReactQueryDevtools initialIsOpen={false} />\n </PersistQueryClientProvider>\n )\n }\n\n return (\n <QueryClientProvider client={qc}>\n <AppwriteContext.Provider value={client}>{children}</AppwriteContext.Provider>\n <ReactQueryDevtools initialIsOpen={false} />\n </QueryClientProvider>\n )\n}\n","import { useContext } from 'react'\n\nimport { AppwriteContext } from './AppwriteProvider'\n\nexport function useAppwrite() {\n const ctx = useContext(AppwriteContext)\n if (!ctx) throw new Error('Wrap your app in <AppwriteProvider>')\n return ctx\n}\n","import { useContext } from 'react'\nimport { QueryClientContext } from '@tanstack/react-query'\n\nexport function useQueryClient() {\n const ctx = useContext(QueryClientContext)\n if (!ctx) throw new Error('Wrap your app in <QueryClientProvider>')\n return ctx\n}\n","import type { UseMutationOptions } from '@tanstack/react-query'\nimport { useMutation as useReactMutation } from '@tanstack/react-query'\n\nimport type { AppwriteException } from './types'\nimport { useQueryClient } from './useQueryClient'\n\nexport function useMutation<\n TData = unknown,\n TError extends AppwriteException[] = [],\n TVariables = void,\n TContext = unknown,\n>(options: UseMutationOptions<TData, TError, TVariables, TContext>) {\n const queryClient = useQueryClient()\n return useReactMutation<TData, TError, TVariables, TContext>(options, queryClient)\n}\n","import type {\n DefinedInitialDataOptions,\n QueryKey,\n UndefinedInitialDataOptions,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { useQuery as useReactQuery } from '@tanstack/react-query'\n\nimport type { AppwriteException } from './types'\nimport { useQueryClient } from './useQueryClient'\n\nexport function useQuery<\n TQueryFnData,\n TError extends AppwriteException[],\n TData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options:\n | UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>\n | DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>\n | UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n) {\n const queryClient = useQueryClient()\n return useReactQuery<TQueryFnData, TError, TData, TQueryKey>(options, queryClient)\n}\n","import type {\n DefinedInitialDataOptions,\n QueryKey,\n UndefinedInitialDataOptions,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { useQuery as useReactQuery } from '@tanstack/react-query'\n\nimport type { AppwriteException } from './types'\nimport { useQueryClient } from './useQueryClient'\n\nexport function useLazyQuery<\n TQueryFnData,\n TError extends AppwriteException[],\n TData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options:\n | UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>\n | DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>\n | UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n) {\n const queryClient = useQueryClient()\n const query = useReactQuery<TQueryFnData, TError, TData, TQueryKey>(\n { ...options, enabled: false },\n queryClient,\n )\n\n return { run: query.refetch, query }\n}\n","import type { QueryKey, UseSuspenseQueryOptions } from '@tanstack/react-query'\nimport { useSuspenseQuery as useSuspenseReactQuery } from '@tanstack/react-query'\n\nimport type { AppwriteException } from './types'\nimport { useQueryClient } from './useQueryClient'\n\nexport function useSuspenseQuery<\n TQueryFnData,\n TError extends AppwriteException[],\n TData,\n TQueryKey extends QueryKey = QueryKey,\n>(options: UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>) {\n const queryClient = useQueryClient()\n return useSuspenseReactQuery<TQueryFnData, TError, TData, TQueryKey>(options, queryClient)\n}\n","import type { ResultOf, TypedDocumentNode } from '@graphql-typed-document-node/core'\nimport { print } from 'graphql'\n\nimport {\n Account,\n Avatars,\n Client,\n Databases,\n Functions,\n Graphql,\n Locale,\n Messaging,\n Realtime,\n Storage,\n TablesDB,\n Teams,\n} from './types'\n\ntype Variables = Record<string, unknown>\n\nconst graphqlObject = (graphqlAppwrite: Graphql) => ({\n client: graphqlAppwrite.client,\n query: async <T, V extends Variables = Variables>({\n query,\n variables,\n }: {\n query: TypedDocumentNode<T, V>\n variables?: V\n }) => {\n const { data, errors } = (await graphqlAppwrite.query({\n query: { query: print(query), variables },\n })) as { data: ResultOf<typeof query>; errors: unknown[] }\n return { data, errors }\n },\n mutation: async <T, V extends Variables = Variables>({\n query,\n variables,\n }: {\n query: TypedDocumentNode<T, V>\n variables?: V\n }) => {\n const { data, errors } = (await graphqlAppwrite.mutation({\n query: { query: print(query), variables },\n })) as { data: ResultOf<typeof query>; errors: unknown[] }\n return { data, errors }\n },\n})\n\nexport function createAppwriteClient({\n endpoint,\n projectId,\n}: {\n endpoint: string\n projectId: string\n}) {\n const client = new Client()\n client.setEndpoint(endpoint).setProject(projectId)\n\n return {\n client,\n account: new Account(client),\n avatars: new Avatars(client),\n realtime: new Realtime(client),\n storage: new Storage(client),\n graphql: graphqlObject(new Graphql(client)),\n databases: new Databases(client),\n functions: new Functions(client),\n locale: new Locale(client),\n messaging: new Messaging(client),\n tablesDB: new TablesDB(client),\n teams: new Teams(client),\n }\n}\n\nexport type AppwriteClient = ReturnType<typeof createAppwriteClient>\n","interface Account {\n acc?: string\n}\n\ninterface Database {\n db?: string\n}\n\ninterface Collection {\n col?: string\n}\n\ninterface Document {\n doc?: string\n}\n\ninterface TablesDB {\n tdb?: string\n}\n\ninterface Table {\n tbl?: string\n}\n\ninterface Row {\n row?: string\n}\n\ninterface Bucket {\n bucket?: string\n}\n\ninterface FileResource {\n file?: string\n}\n\ninterface Actionable {\n actionable?: string\n}\n\ninterface Execution {\n exec?: string\n}\n\ninterface Func {\n func?: string\n}\n\ninterface Team {\n team?: string\n}\n\ninterface Membership {\n membership?: string\n}\n\ninterface Locale {\n locale?: string\n}\n\ninterface Messaging {\n messaging?: string\n}\n\ninterface Transaction {\n transaction?: string\n}\n\nexport class Keys<T> {\n private keys: string[] = ['appwrite']\n private _type!: T\n\n private constructor() {}\n\n private static create<T>(...segments: string[]) {\n const k = new Keys<T>()\n k.keys.push(...segments)\n return k\n }\n\n static account() {\n return Keys.create<Account>('account')\n }\n\n static databases() {\n return Keys.create<Database>('databases')\n }\n\n static database(id: string) {\n return Keys.create<Database>('databases', id)\n }\n\n static tablesDB(id: string) {\n return Keys.create<TablesDB>('tablesDB', id)\n }\n\n static buckets() {\n return Keys.create<Bucket>('buckets')\n }\n\n static bucket(id: string) {\n return Keys.create<Bucket>('buckets', id)\n }\n\n static functions() {\n return Keys.create<Func>('functions')\n }\n\n static function(id: string) {\n return Keys.create<Func>('functions', id)\n }\n\n static teams() {\n return Keys.create<Team>('teams')\n }\n\n static team(id: string) {\n return Keys.create<Team>('teams', id)\n }\n\n static locale() {\n return Keys.create<Locale>('locale')\n }\n\n static messaging() {\n return Keys.create<Messaging>('messaging')\n }\n\n jwt(this: Keys<Account>) {\n this.keys.push('jwt')\n return this as unknown as Keys<Actionable>\n }\n\n anonymous(this: Keys<Account>) {\n this.keys.push('anonymous')\n return this as unknown as Keys<Actionable>\n }\n\n emailToken(this: Keys<Account>) {\n this.keys.push('emailToken')\n return this as unknown as Keys<Actionable>\n }\n\n emailVerification(this: Keys<Account>) {\n this.keys.push('emailVerification')\n return this as unknown as Keys<Actionable>\n }\n\n magicUrl(this: Keys<Account>) {\n this.keys.push('magicUrl')\n return this as unknown as Keys<Actionable>\n }\n\n mfaAuthenticator(this: Keys<Account>) {\n this.keys.push('mfaAuthenticator')\n return this as unknown as Keys<Actionable>\n }\n\n mfaChallenge(this: Keys<Account>) {\n this.keys.push('mfaChallenge')\n return this as unknown as Keys<Actionable>\n }\n\n mfaCodes(this: Keys<Account>) {\n this.keys.push('mfaCodes')\n return this as unknown as Keys<Actionable>\n }\n\n oauth2Token(this: Keys<Account>) {\n this.keys.push('oauth2Token')\n return this as unknown as Keys<Actionable>\n }\n\n phoneToken(this: Keys<Account>) {\n this.keys.push('phoneToken')\n return this as unknown as Keys<Actionable>\n }\n\n phoneVerification(this: Keys<Account>) {\n this.keys.push('phoneVerification')\n return this as unknown as Keys<Actionable>\n }\n\n pushTarget(this: Keys<Account>) {\n this.keys.push('pushTarget')\n return this as unknown as Keys<Actionable>\n }\n\n identity(this: Keys<Account>) {\n this.keys.push('identity')\n return this as unknown as Keys<Actionable>\n }\n\n prefs(this: Keys<Account>) {\n this.keys.push('prefs')\n return this as unknown as Keys<Actionable>\n }\n\n login(this: Keys<Account>) {\n this.keys.push('login')\n return this as unknown as Keys<Actionable>\n }\n\n signUp(this: Keys<Account>) {\n this.keys.push('signUp')\n return this as unknown as Keys<Actionable>\n }\n\n name(this: Keys<Account>) {\n this.keys.push('name')\n return this as unknown as Keys<Actionable>\n }\n\n email(this: Keys<Account>) {\n this.keys.push('email')\n return this as unknown as Keys<Actionable>\n }\n\n phone(this: Keys<Account>) {\n this.keys.push('phone')\n return this as unknown as Keys<Actionable>\n }\n\n password(this: Keys<Account>) {\n this.keys.push('password')\n return this as unknown as Keys<Actionable>\n }\n\n recovery(this: Keys<Account>) {\n this.keys.push('recovery')\n return this as unknown as Keys<Actionable>\n }\n\n mfa(this: Keys<Account>) {\n this.keys.push('mfa')\n return this as unknown as Keys<Actionable>\n }\n\n status(this: Keys<Account>) {\n this.keys.push('status')\n return this as unknown as Keys<Actionable>\n }\n\n logs(this: Keys<Account>) {\n this.keys.push('logs')\n return this as unknown as Keys<Actionable>\n }\n\n verification(this: Keys<Account>) {\n this.keys.push('verification')\n return this as unknown as Keys<Actionable>\n }\n\n session(this: Keys<Account>, id?: string) {\n this.keys.push('sessions')\n if (id) this.keys.push(id)\n return this as unknown as Keys<Actionable>\n }\n\n sessions(this: Keys<Account>) {\n return [...this.keys, 'sessions'] as const\n }\n\n identities(this: Keys<Account>) {\n return [...this.keys, 'identities'] as const\n }\n\n mfaFactors(this: Keys<Account>) {\n return [...this.keys, 'mfaFactors'] as const\n }\n\n collections(this: Keys<Database>) {\n this.keys.push('collections')\n return this as unknown as Keys<Collection>\n }\n\n collection(this: Keys<Database>, id: string) {\n this.keys.push('collections', id)\n return this as unknown as Keys<Collection>\n }\n\n transactions(this: Keys<Database>) {\n this.keys.push('transactions')\n return this as unknown as Keys<Transaction>\n }\n\n transaction(this: Keys<Database>, id: string) {\n this.keys.push('transactions', id)\n return this as unknown as Keys<Transaction>\n }\n\n documents(this: Keys<Collection>) {\n this.keys.push('documents')\n return this as unknown as Keys<Actionable>\n }\n\n document(this: Keys<Collection>, id: string) {\n this.keys.push('documents', id)\n return this as unknown as Keys<Document>\n }\n\n operations(this: Keys<Transaction>) {\n this.keys.push('operations')\n return this as unknown as Keys<Actionable>\n }\n\n table(this: Keys<TablesDB>, id: string) {\n this.keys.push('table', id)\n return this as unknown as Keys<Table>\n }\n\n rows(this: Keys<Table>) {\n this.keys.push('rows')\n return this as unknown as Keys<Actionable>\n }\n\n row(this: Keys<Table>, id: string) {\n this.keys.push('row', id)\n return this as unknown as Keys<Row>\n }\n\n files(this: Keys<Bucket>) {\n this.keys.push('files')\n return this as unknown as Keys<Actionable>\n }\n\n file(this: Keys<Bucket>, id: string) {\n this.keys.push('files', id)\n return this as unknown as Keys<FileResource>\n }\n\n executions(this: Keys<Func>) {\n this.keys.push('executions')\n return this as unknown as Keys<Actionable>\n }\n\n execution(this: Keys<Func>, id: string) {\n this.keys.push('executions', id)\n return this as unknown as Keys<Execution>\n }\n\n teamName(this: Keys<Team>) {\n this.keys.push('name')\n return this as unknown as Keys<Actionable>\n }\n\n teamPrefs(this: Keys<Team>) {\n this.keys.push('prefs')\n return this as unknown as Keys<Actionable>\n }\n\n memberships(this: Keys<Team>) {\n this.keys.push('memberships')\n return this as unknown as Keys<Actionable>\n }\n\n membership(this: Keys<Team>, id: string) {\n this.keys.push('memberships', id)\n return this as unknown as Keys<Membership>\n }\n\n membershipStatus(this: Keys<Team>) {\n this.keys.push('membershipStatus')\n return this as unknown as Keys<Actionable>\n }\n\n continents(this: Keys<Locale>) {\n return [...this.keys, 'continents'] as const\n }\n\n countries(this: Keys<Locale>) {\n return [...this.keys, 'countries'] as const\n }\n\n countriesEU(this: Keys<Locale>) {\n return [...this.keys, 'countriesEU'] as const\n }\n\n countriesPhones(this: Keys<Locale>) {\n return [...this.keys, 'countriesPhones'] as const\n }\n\n currencies(this: Keys<Locale>) {\n return [...this.keys, 'currencies'] as const\n }\n\n languages(this: Keys<Locale>) {\n return [...this.keys, 'languages'] as const\n }\n\n codes(this: Keys<Locale>) {\n return [...this.keys, 'codes'] as const\n }\n\n subscriber(this: Keys<Messaging>) {\n this.keys.push('subscriber')\n return this as unknown as Keys<Actionable>\n }\n\n create() {\n return [...this.keys, 'create'] as const\n }\n\n upsert() {\n return [...this.keys, 'upsert'] as const\n }\n\n update() {\n return [...this.keys, 'update'] as const\n }\n\n delete() {\n return [...this.keys, 'delete'] as const\n }\n\n key() {\n return [...this.keys] as const\n }\n}\n","import { graphql as gql } from 'gql.tada'\n\nimport type { AppwriteClient } from '../client'\nimport { Keys } from '../query/Keys'\n\nexport const getAccount = gql(/* GraphQL */ `\n query AccountGet {\n accountGet {\n _id\n name\n email\n prefs {\n data\n }\n }\n }\n`)\n\nexport function getAccountQuery(client: AppwriteClient) {\n return {\n queryKey: Keys.account().key(),\n queryFn: async () => {\n const { data, errors } = await client.graphql.query({\n query: getAccount,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountGet\n },\n retry: false,\n }\n}\n","import { useEffect, useState } from 'react'\nimport type { ResultOf } from '@graphql-typed-document-node/core'\nimport { Channel } from 'appwrite'\nimport { castDraft, produce } from 'immer'\n\nimport type { getAccount } from './queryOptions'\nimport { getAccountQuery } from './queryOptions'\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, Models, QueryOptions, Realtime } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useLazyQuery } from '../useLazyQuery'\nimport { useQuery } from '../useQuery'\nimport { useQueryClient } from '../useQueryClient'\n\ntype Result = ResultOf<typeof getAccount>['accountGet']\n\nexport function useLazyAccount() {\n const client = useAppwrite()\n const queryClient = useQueryClient()\n const [isActive, setIsActive] = useState(false)\n\n const queryResult = useLazyQuery<Result, AppwriteException[], Result>(\n getAccountQueryOptions(client),\n )\n\n useEffect(() => {\n if (!isActive) return\n\n const subscriptionPromise = subscribe(client.realtime, queryClient)\n return () => {\n void subscriptionPromise.then((sub) => sub.close())\n }\n }, [isActive, client.realtime, queryClient])\n\n return {\n ...queryResult,\n run: () => {\n setIsActive(true)\n return queryResult.run()\n },\n }\n}\n\nexport function useAccount(opts: QueryOptions = {}) {\n const client = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n ...getAccountQueryOptions(client),\n ...opts,\n })\n\n useEffect(() => {\n const subscriptionPromise = subscribe(client.realtime, queryClient)\n return () => {\n void subscriptionPromise.then((sub) => sub.close())\n }\n }, [client.realtime, queryClient])\n\n return queryResult\n}\n\nfunction getAccountQueryOptions(client: ReturnType<typeof useAppwrite>) {\n return getAccountQuery(client)\n}\n\nfunction subscribe<Preferences extends Models.Preferences>(\n realtime: Realtime,\n queryClient: ReturnType<typeof useQueryClient>,\n) {\n return realtime.subscribe<Models.User<Preferences>>(Channel.account(), (response) => {\n const isUpdatingPreferences = response.events.some((event) => event.endsWith('prefs'))\n\n if (isUpdatingPreferences) {\n queryClient.setQueryData<Models.User<Preferences>>(Keys.account().key(), (account) =>\n produce(account, (draft) => {\n if (draft) {\n draft.prefs = castDraft(response.payload.prefs) as typeof draft.prefs\n }\n }),\n )\n\n return\n }\n\n queryClient.setQueryData<Models.User<Preferences>>(Keys.account().key(), response.payload)\n })\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst createAnonymousSession = gql(/* GraphQL */ `\n mutation CreateAnonymousSession {\n accountCreateAnonymousSession {\n _id\n expire\n current\n }\n }\n`)\n\ntype Result = ResultOf<typeof createAnonymousSession>['accountCreateAnonymousSession']\n\nexport function useCreateAnonymousSession() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n mutationKey: Keys.account().anonymous().create(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: createAnonymousSession,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateAnonymousSession\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().anonymous().create() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createEmailToken = gql(/* GraphQL */ `\n mutation CreateEmailToken($userId: String!, $email: String!, $phrase: Boolean) {\n accountCreateEmailToken(userId: $userId, email: $email, phrase: $phrase) {\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createEmailToken>\ntype Result = ResultOf<typeof createEmailToken>['accountCreateEmailToken']\n\nexport function useCreateEmailToken() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().emailToken().create(),\n mutationFn: async ({ userId, email, phrase }) => {\n const { data, errors } = await graphql.mutation({\n query: createEmailToken,\n variables: {\n userId,\n email,\n phrase,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateEmailToken\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\nimport { useSuspenseQuery } from '../useSuspenseQuery'\n\n//The documentation says there should be a duration parameter, but including one causes a server error.\nconst accountCreateJWT = gql(/* GraphQL */ `\n mutation CreateJWT {\n accountCreateJWT {\n jwt\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountCreateJWT>['accountCreateJWT']\n\nexport function useCreateJWT({ gcTime = 600000 }: { gcTime?: number } = {}) {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n gcTime,\n mutationKey: Keys.account().jwt().create(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: accountCreateJWT,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateJWT\n },\n onSuccess: (data) => {\n graphql.client.setJWT(data.jwt)\n queryClient.setQueryData(Keys.account().jwt().create(), data.jwt, { updatedAt: Date.now() })\n },\n })\n\n return { ...queryResult }\n}\n\nexport function useSuspenseCreateJWT({ gcTime = 600000 }: { gcTime?: number } = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useSuspenseQuery<Result, AppwriteException[], Result>({\n gcTime,\n queryKey: Keys.account().jwt().create(),\n queryFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: accountCreateJWT,\n })\n\n if (errors) {\n throw errors\n }\n\n graphql.client.setJWT(data.accountCreateJWT.jwt)\n return data.accountCreateJWT\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createMagicURLToken = gql(/* GraphQL */ `\n mutation CreateMagicURLToken($userId: String!, $email: String!, $url: String, $phrase: Boolean) {\n accountCreateMagicURLToken(userId: $userId, email: $email, url: $url, phrase: $phrase) {\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createMagicURLToken>\ntype Result = ResultOf<typeof createMagicURLToken>['accountCreateMagicURLToken']\n\nexport function useCreateMagicURLToken() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().magicUrl().create(),\n mutationFn: async ({ userId, email, url, phrase }) => {\n const { data, errors } = await graphql.mutation({\n query: createMagicURLToken,\n variables: {\n userId,\n email,\n url,\n phrase,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateMagicURLToken\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountCreateMfaAuthenticator = gql(/* GraphQL */ `\n mutation CreateMfaAuthenticator($type: String!) {\n accountCreateMfaAuthenticator(type: $type) {\n secret\n uri\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountCreateMfaAuthenticator>\ntype Result = ResultOf<typeof accountCreateMfaAuthenticator>['accountCreateMfaAuthenticator']\n\nexport function useCreateMfaAuthenticator() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().mfaAuthenticator().create(),\n mutationFn: async ({ type = 'totp' }) => {\n const { data, errors } = await graphql.mutation({\n query: accountCreateMfaAuthenticator,\n variables: {\n type,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateMfaAuthenticator\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().mfaAuthenticator().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst accountCreateMfaChallenge = gql(/* GraphQL */ `\n mutation CreateMfaChallenge($factor: String!) {\n accountCreateMfaChallenge(factor: $factor) {\n _id\n userId\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountCreateMfaChallenge>\ntype Result = ResultOf<typeof accountCreateMfaChallenge>['accountCreateMfaChallenge']\n\nexport function useCreateMfaChallenge() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().mfaChallenge().create(),\n mutationFn: async ({ factor }) => {\n const { data, errors } = await graphql.mutation({\n query: accountCreateMfaChallenge,\n variables: {\n factor,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateMfaChallenge\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountCreateMfaRecoveryCodes = gql(/* GraphQL */ `\n mutation CreateMfaRecoveryCodes {\n accountCreateMfaRecoveryCodes {\n recoveryCodes\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountCreateMfaRecoveryCodes>['accountCreateMfaRecoveryCodes']\n\nexport function useCreateMfaRecoveryCodes() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n mutationKey: Keys.account().mfaCodes().create(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: accountCreateMfaRecoveryCodes,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateMfaRecoveryCodes\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({\n queryKey: Keys.account().mfaCodes().key(),\n })\n },\n })\n\n return { ...queryResult }\n}\n","import { Keys } from '../query/Keys'\nimport type { AppwriteException, OAuthProvider } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\ntype OAuthTokenProps = {\n provider: OAuthProvider\n success?: string\n failure?: string\n scopes?: string[]\n}\n\nexport function useCreateOAuth2Token() {\n const { account } = useAppwrite()\n\n const queryResult = useMutation<void | string, AppwriteException[], OAuthTokenProps>({\n mutationKey: Keys.account().oauth2Token().create(),\n mutationFn: async ({ provider, success, failure, scopes }) => {\n return account.createOAuth2Token({ provider, success, failure, scopes })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createPhoneToken = gql(/* GraphQL */ `\n mutation CreatePhoneToken($userId: String!, $phone: String!) {\n accountCreatePhoneToken(userId: $userId, phone: $phone) {\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createPhoneToken>\ntype Result = ResultOf<typeof createPhoneToken>['accountCreatePhoneToken']\n\nexport function useCreatePhoneToken() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().phoneToken().create(),\n mutationFn: async ({ userId, phone }) => {\n const { data, errors } = await graphql.mutation({\n query: createPhoneToken,\n variables: {\n userId,\n phone,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreatePhoneToken\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createPhoneVerification = gql(/* GraphQL */ `\n mutation CreatePhoneVerification {\n accountCreatePhoneVerification {\n expire\n }\n }\n`)\n\ntype Result = ResultOf<typeof createPhoneVerification>['accountCreatePhoneVerification']\n\nexport function useCreatePhoneVerification() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n mutationKey: Keys.account().phoneVerification().create(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: createPhoneVerification,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreatePhoneVerification\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountCreatePushTarget = gql(/* GraphQL */ `\n mutation CreatePushTarget($targetId: String!, $identifier: String!, $providerId: String) {\n accountCreatePushTarget(targetId: $targetId, identifier: $identifier, providerId: $providerId) {\n _id\n userId\n providerType\n identifier\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountCreatePushTarget>\ntype Result = ResultOf<typeof accountCreatePushTarget>['accountCreatePushTarget']\n\nexport function useCreatePushTarget() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().pushTarget().create(),\n mutationFn: async ({ targetId, identifier, providerId }) => {\n const { data, errors } = await graphql.mutation({\n query: accountCreatePushTarget,\n variables: {\n targetId,\n identifier,\n providerId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreatePushTarget\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst createSession = gql(/* GraphQL */ `\n mutation CreateSession($userId: String!, $secret: String!) {\n accountCreateSession(userId: $userId, secret: $secret) {\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createSession>\ntype Result = ResultOf<typeof createSession>['accountCreateSession']\n\nexport function useCreateSession() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().session().create(),\n mutationFn: async ({ userId, secret }) => {\n const { data, errors } = await graphql.mutation({\n query: createSession,\n variables: {\n userId,\n secret,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateSession\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createEmailVerification = gql(/* GraphQL */ `\n mutation CreateEmailVerification($url: String!) {\n accountCreateEmailVerification(url: $url) {\n _id\n userId\n secret\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createEmailVerification>\ntype Result = ResultOf<typeof createEmailVerification>['accountCreateEmailVerification']\n\nexport function useCreateEmailVerification() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().emailVerification().create(),\n mutationFn: async ({ url }) => {\n const { data, errors } = await graphql.mutation({\n query: createEmailVerification,\n variables: { url },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateEmailVerification\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountDeleteIdentity = gql(/* GraphQL */ `\n mutation DeleteIdentity($identityId: String!) {\n accountDeleteIdentity(identityId: $identityId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountDeleteIdentity>\ntype Result = ResultOf<typeof accountDeleteIdentity>['accountDeleteIdentity']\n\nexport function useDeleteIdentity() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().identity().delete(),\n mutationFn: async ({ identityId }) => {\n const { data, errors } = await graphql.mutation({\n query: accountDeleteIdentity,\n variables: {\n identityId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountDeleteIdentity ?? { status: '' }\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst deleteMFAAuthenticator = gql(/* GraphQL */ `\n mutation DeleteMfaAuthenticator($type: String!) {\n accountDeleteMfaAuthenticator(type: $type) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteMFAAuthenticator>\ntype Result = ResultOf<typeof deleteMFAAuthenticator>['accountDeleteMfaAuthenticator']\n\nexport function useDeleteMfaAuthenticator() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().mfaAuthenticator().delete(),\n mutationFn: async ({ type = 'totp' }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteMFAAuthenticator,\n variables: {\n type,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountDeleteMfaAuthenticator ?? { status: '' }\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({\n queryKey: Keys.account().mfaAuthenticator().key(),\n })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountDeletePushTarget = gql(/* GraphQL */ `\n mutation DeletePushTarget($targetId: String!) {\n accountDeletePushTarget(targetId: $targetId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountDeletePushTarget>\ntype Result = ResultOf<typeof accountDeletePushTarget>['accountDeletePushTarget']\n\nexport function useDeletePushTarget() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().pushTarget().delete(),\n mutationFn: async ({ targetId }) => {\n const { data, errors } = await graphql.mutation({\n query: accountDeletePushTarget,\n variables: {\n targetId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountDeletePushTarget ?? { status: '' }\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst deleteSession = gql(/* GraphQL */ `\n mutation DeleteSession($sessionId: String!) {\n accountDeleteSession(sessionId: $sessionId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteSession>\ntype Result = ResultOf<typeof deleteSession>['accountDeleteSession']\n\nexport function useDeleteSession() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().session().delete(),\n mutationFn: async ({ sessionId }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteSession,\n variables: {\n sessionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountDeleteSession ?? { status: '' }\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst deleteSessions = gql(/* GraphQL */ `\n mutation DeleteSessions {\n accountDeleteSessions {\n status\n }\n }\n`)\n\ntype Result = ResultOf<typeof deleteSessions>['accountDeleteSessions']\n\nexport function useDeleteSessions() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n mutationKey: Keys.account().session().delete(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: deleteSessions,\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountDeleteSessions ?? { status: '' }\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n queryClient.clear()\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getMFARecoveryCodes = gql(/* GraphQL */ `\n query GetMfaRecoveryCodes {\n accountGetMfaRecoveryCodes {\n recoveryCodes\n }\n }\n`)\n\ntype Result = ResultOf<typeof getMFARecoveryCodes>['accountGetMfaRecoveryCodes']\n\nexport function useGetMfaRecoveryCodes(opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.account().mfaCodes().key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getMFARecoveryCodes,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountGetMfaRecoveryCodes\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst accountGetPrefs = gql(/* GraphQL */ `\n query GetPrefs {\n accountGetPrefs {\n data\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountGetPrefs>['accountGetPrefs']\n\nexport function useGetPrefs(opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.account().prefs().key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: accountGetPrefs,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountGetPrefs\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getSession = gql(/* GraphQL */ `\n query GetSession($sessionId: String!) {\n accountGetSession(sessionId: $sessionId) {\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof getSession>\ntype Result = ResultOf<typeof getSession>['accountGetSession']\n\nexport function useGetSession({ sessionId }: Variables, opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.account().session(sessionId).key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getSession,\n variables: { sessionId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountGetSession\n },\n ...opts,\n })\n\n return queryResult\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst accountListIdentities = gql(/* GraphQL */ `\n query ListIdentities {\n accountListIdentities {\n total\n identities {\n _id\n userId\n provider\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountListIdentities>['accountListIdentities']\n\nexport function useListIdentities(opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.account().identities(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: accountListIdentities,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountListIdentities\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listMFAFactors = gql(/* GraphQL */ `\n query ListMfaFactors {\n accountListMfaFactors {\n totp\n phone\n email\n }\n }\n`)\n\ntype Result = ResultOf<typeof listMFAFactors>['accountListMfaFactors']\n\nexport function useListMfaFactors(opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.account().mfaFactors(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listMFAFactors,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountListMfaFactors\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst accountListSessions = gql(/* GraphQL */ `\n query ListSessions {\n accountListSessions {\n sessions {\n _id\n _createdAt\n osName\n clientName\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountListSessions>['accountListSessions']\n\nexport function useListSessions(opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.account().sessions(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: accountListSessions,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountListSessions\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, OAuthProvider } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\ntype OAuthLoginProps = {\n provider: OAuthProvider\n success?: string\n failure?: string\n}\n\nconst accountCreateEmailPasswordSession = gql(/* GraphQL */ `\n mutation CreateEmailPasswordSession($email: String!, $password: String!) {\n accountCreateEmailPasswordSession(email: $email, password: $password) {\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountCreateEmailPasswordSession>\ntype Result = ResultOf<\n typeof accountCreateEmailPasswordSession\n>['accountCreateEmailPasswordSession']\n\nexport function useLogin() {\n const { account, graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const login = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().login().create(),\n mutationFn: async ({ email, password }) => {\n const { data, errors } = await graphql.mutation({\n query: accountCreateEmailPasswordSession,\n variables: {\n email,\n password,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateEmailPasswordSession\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n },\n })\n\n const oAuthLogin = useMutation<void | string, AppwriteException[], OAuthLoginProps>({\n mutationFn: async ({ provider, success, failure }) => {\n return account.createOAuth2Session({ provider, success, failure })\n },\n })\n\n return {\n login,\n oAuthLogin,\n }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst deleteSession = gql(/* GraphQL */ `\n mutation DeleteSession($sessionId: String!) {\n accountDeleteSession(sessionId: $sessionId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteSession>\ntype Result = ResultOf<typeof deleteSession>['accountDeleteSession']\n\nexport function useLogout() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().session().delete(),\n mutationFn: async ({ sessionId }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteSession,\n variables: {\n sessionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountDeleteSession ?? { status: '' }\n },\n onSuccess: async () => {\n queryClient.clear()\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst accountListLogs = gql(/* GraphQL */ `\n query ListLogs($queries: [String!]) {\n accountListLogs(queries: $queries) {\n total\n logs {\n event\n userId\n userEmail\n userName\n mode\n ip\n time\n osCode\n osName\n osVersion\n clientType\n clientCode\n clientName\n clientVersion\n clientEngine\n clientEngineVersion\n deviceName\n deviceBrand\n deviceModel\n countryCode\n countryName\n }\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountListLogs>\ntype Result = ResultOf<typeof accountListLogs>['accountListLogs']\n\nexport function useLogs({ queries }: Variables, opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: [...Keys.account().logs().key(), ...(queries ?? [])],\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: accountListLogs,\n variables: {\n queries,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountListLogs\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createRecovery = gql(/* GraphQL */ `\n mutation CreateRecovery($email: String!, $url: String!) {\n accountCreateRecovery(email: $email, url: $url) {\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createRecovery>\ntype Result = ResultOf<typeof createRecovery>['accountCreateRecovery']\n\n/**\n * Send the recovery email to the address supplied\n */\nexport function usePasswordRecovery() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().recovery().create(),\n mutationFn: async ({ email, url: resetUrl }) => {\n const { data, errors } = await graphql.mutation({\n query: createRecovery,\n variables: {\n email,\n url: resetUrl,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateRecovery\n },\n onSuccess: async (_, variables) => {\n try {\n localStorage?.setItem('email', variables.email)\n } catch (e: any) {\n console.error(\n 'Could not save email to local storage. If you are using react-native, this is expected.',\n e,\n )\n }\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst updateRecovery = gql(/* GraphQL */ `\n mutation UpdateRecovery($userId: String!, $secret: String!, $password: String!) {\n accountUpdateRecovery(userId: $userId, secret: $secret, password: $password) {\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateRecovery>\ntype Result = ResultOf<typeof updateRecovery>['accountUpdateRecovery']\n\nexport function useResetPassword() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().recovery().update(),\n mutationFn: async ({ userId, secret, password }) => {\n const { data, errors } = await graphql.mutation({\n query: updateRecovery,\n variables: {\n userId,\n secret,\n password,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateRecovery\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { ID } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createAccount = gql(/* GraphQL */ `\n mutation CreateAccount($userId: String!, $name: String, $email: String!, $password: String!) {\n accountCreate(userId: $userId, name: $name, email: $email, password: $password) {\n name\n email\n }\n }\n`)\n\nconst verify = gql(/* GraphQL */ `\n mutation VerifyEmail($url: String!) {\n accountCreateVerification(url: $url) {\n expire\n }\n }\n`)\n\ntype CreateVariables = VariablesOf<typeof createAccount>\ntype CreateResult = ResultOf<typeof createAccount>['accountCreate']\n\ntype VerifyProps = {\n verifyUrl: string\n}\ntype VerifyResult = ResultOf<typeof verify>['accountCreateVerification']\n\nexport function useSignUp() {\n const { graphql } = useAppwrite()\n\n const signUp = useMutation<CreateResult, AppwriteException[], CreateVariables>({\n mutationKey: Keys.account().signUp().create(),\n mutationFn: async ({ userId, email, password, name }) => {\n const { data, errors } = await graphql.mutation({\n query: createAccount,\n variables: {\n userId: userId ?? ID.unique(),\n name,\n email,\n password,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreate\n },\n })\n\n const verifyEmail = useMutation<VerifyResult, AppwriteException[], VerifyProps>({\n mutationKey: Keys.account().emailVerification().create(),\n mutationFn: async ({ verifyUrl }) => {\n const { data, errors } = await graphql.mutation({\n query: verify,\n variables: {\n url: verifyUrl,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateVerification\n },\n })\n\n return { signUp, verifyEmail }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const accountUpdateEmail = gql(/* GraphQL */ `\n mutation UpdateEmail($email: String!, $password: String!) {\n accountUpdateEmail(email: $email, password: $password) {\n name\n email\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdateEmail>\ntype Result = ResultOf<typeof accountUpdateEmail>['accountUpdateEmail']\n\nexport function useUpdateEmail() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().email().update(),\n mutationFn: async ({ email, password }) => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdateEmail,\n variables: {\n email,\n password,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateEmail\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateEmailVerification = gql(/* GraphQL */ `\n mutation UpdateEmailVerification($userId: String!, $secret: String!) {\n accountUpdateEmailVerification(userId: $userId, secret: $secret) {\n _id\n userId\n secret\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateEmailVerification>\ntype Result = ResultOf<typeof updateEmailVerification>['accountUpdateEmailVerification']\n\nexport function useUpdateEmailVerification() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().emailVerification().update(),\n mutationFn: async ({ userId, secret }) => {\n const { data, errors } = await graphql.mutation({\n query: updateEmailVerification,\n variables: { userId, secret },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateEmailVerification\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateMagicURLSession = gql(/* GraphQL */ `\n mutation UpdateMagicURLSession($userId: String!, $secret: String!) {\n accountUpdateMagicURLSession(userId: $userId, secret: $secret) {\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateMagicURLSession>\ntype Result = ResultOf<typeof updateMagicURLSession>['accountUpdateMagicURLSession']\n\nexport function useUpdateMagicURLSession() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().magicUrl().update(),\n mutationFn: async ({ userId, secret }) => {\n const { data, errors } = await graphql.mutation({\n query: updateMagicURLSession,\n variables: {\n userId,\n secret,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateMagicURLSession\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountUpdateMFA = gql(/* GraphQL */ `\n mutation UpdateMFA($mfa: Boolean!) {\n accountUpdateMFA(mfa: $mfa) {\n mfa\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdateMFA>\ntype Result = ResultOf<typeof accountUpdateMFA>['accountUpdateMFA']\n\nexport function useUpdateMfa() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().mfa().update(),\n mutationFn: async ({ mfa }) => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdateMFA,\n variables: {\n mfa,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateMFA\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().mfaFactors() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateMFAAuthenticator = gql(/* GraphQL */ `\n mutation UpdateMfaAuthenticator($type: String!, $otp: String!) {\n accountUpdateMfaAuthenticator(type: $type, otp: $otp) {\n mfa\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateMFAAuthenticator>\ntype Result = ResultOf<typeof updateMFAAuthenticator>['accountUpdateMfaAuthenticator']\n\nexport function useUpdateMfaAuthenticator() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().mfaAuthenticator().update(),\n mutationFn: async ({ type = 'totp', otp }) => {\n const { data, errors } = await graphql.mutation({\n query: updateMFAAuthenticator,\n variables: {\n type,\n otp,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateMfaAuthenticator\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().mfaFactors() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst accountUpdateMfaChallenge = gql(/* GraphQL */ `\n mutation UpdateMfaChallenge($challengeId: String!, $otp: String!) {\n accountUpdateMfaChallenge(challengeId: $challengeId, otp: $otp) {\n _id\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdateMfaChallenge>\ntype Result = ResultOf<typeof accountUpdateMfaChallenge>['accountUpdateMfaChallenge']\n\nexport function useUpdateMfaChallenge() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().mfaChallenge().update(),\n mutationFn: async ({ challengeId, otp }) => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdateMfaChallenge,\n variables: {\n challengeId,\n otp,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountUpdateMfaChallenge ?? null\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountUpdateMfaRecoveryCodes = gql(/* GraphQL */ `\n mutation UpdateMfaRecoveryCodes {\n accountUpdateMfaRecoveryCodes {\n recoveryCodes\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountUpdateMfaRecoveryCodes>['accountUpdateMfaRecoveryCodes']\n\nexport function useUpdateMfaRecoveryCodes() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n mutationKey: Keys.account().mfaCodes().update(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdateMfaRecoveryCodes,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateMfaRecoveryCodes\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({\n queryKey: Keys.account().mfaCodes().key(),\n })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const accountUpdateName = gql(/* GraphQL */ `\n mutation UpdateName($name: String!) {\n accountUpdateName(name: $name) {\n name\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdateName>\ntype Result = ResultOf<typeof accountUpdateName>['accountUpdateName']\n\nexport function useUpdateName() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().name().update(),\n mutationFn: async ({ name }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: accountUpdateName,\n variables: {\n name,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData.accountUpdateName\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const updatePassword = gql(/* GraphQL */ `\n mutation UpdatePassword($password: String!, $oldPassword: String!) {\n accountUpdatePassword(password: $password, oldPassword: $oldPassword) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updatePassword>\ntype Result = ResultOf<typeof updatePassword>['accountUpdatePassword']\n\nexport function useUpdatePassword() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().password().update(),\n mutationFn: async ({ password, oldPassword }) => {\n const { data, errors } = await graphql.mutation({\n query: updatePassword,\n variables: {\n password,\n oldPassword,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountUpdatePassword\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const accountUpdatePhone = gql(/* GraphQL */ `\n mutation UpdatePhone($phone: String!, $password: String!) {\n accountUpdatePhone(phone: $phone, password: $password) {\n phone\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdatePhone>\ntype Result = ResultOf<typeof accountUpdatePhone>['accountUpdatePhone']\n\nexport function useUpdatePhone() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().phone().update(),\n mutationFn: async ({ phone, password }) => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdatePhone,\n variables: {\n phone,\n password,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdatePhone\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updatePhoneSession = gql(/* GraphQL */ `\n mutation UpdatePhoneSession($userId: String!, $secret: String!) {\n accountUpdatePhoneSession(userId: $userId, secret: $secret) {\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updatePhoneSession>\ntype Result = ResultOf<typeof updatePhoneSession>['accountUpdatePhoneSession']\n\nexport function useUpdatePhoneSession() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().phoneToken().update(),\n mutationFn: async ({ userId, secret }) => {\n const { data, errors } = await graphql.mutation({\n query: updatePhoneSession,\n variables: {\n userId,\n secret,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdatePhoneSession\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst updatePhoneVerification = gql(/* GraphQL */ `\n mutation UpdatePhoneVerification($userId: String!, $secret: String!) {\n accountUpdatePhoneVerification(userId: $userId, secret: $secret) {\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updatePhoneVerification>\ntype Result = ResultOf<typeof updatePhoneVerification>['accountUpdatePhoneVerification']\n\nexport function useUpdatePhoneVerification() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().phoneVerification().update(),\n mutationFn: async ({ userId, secret }) => {\n const { data, errors } = await graphql.mutation({\n query: updatePhoneVerification,\n variables: {\n userId,\n secret,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdatePhoneVerification\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const accountUpdatePrefs = gql(/* GraphQL */ `\n mutation UpdatePrefs($prefs: Assoc!) {\n accountUpdatePrefs(prefs: $prefs) {\n prefs {\n data\n }\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdatePrefs>\ntype Result = ResultOf<typeof accountUpdatePrefs>['accountUpdatePrefs']\n\nexport function useUpdatePrefs() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().prefs().update(),\n mutationFn: async ({ prefs }) => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdatePrefs,\n variables: { prefs },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountUpdatePrefs\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountUpdatePushTarget = gql(/* GraphQL */ `\n mutation UpdatePushTarget($targetId: String!, $identifier: String!) {\n accountUpdatePushTarget(targetId: $targetId, identifier: $identifier) {\n _id\n userId\n providerType\n identifier\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdatePushTarget>\ntype Result = ResultOf<typeof accountUpdatePushTarget>['accountUpdatePushTarget']\n\nexport function useUpdatePushTarget() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().pushTarget().update(),\n mutationFn: async ({ targetId, identifier }) => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdatePushTarget,\n variables: {\n targetId,\n identifier,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdatePushTarget\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateSession = gql(/* GraphQL */ `\n mutation UpdateSession($sessionId: String!) {\n accountUpdateSession(sessionId: $sessionId) {\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateSession>\ntype Result = ResultOf<typeof updateSession>['accountUpdateSession']\n\nexport function useUpdateSession() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().session().update(),\n mutationFn: async ({ sessionId }) => {\n const { data, errors } = await graphql.mutation({\n query: updateSession,\n variables: {\n sessionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateSession\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountUpdateStatus = gql(/* GraphQL */ `\n mutation UpdateStatus {\n accountUpdateStatus {\n _id\n status\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountUpdateStatus>['accountUpdateStatus']\n\nexport function useUpdateStatus() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n mutationKey: Keys.account().status().update(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdateStatus,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateStatus\n },\n onSuccess: async () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateVerification = gql(/* GraphQL */ `\n mutation UpdateVerification($userId: String!, $secret: String!) {\n accountUpdateVerification(userId: $userId, secret: $secret) {\n secret\n expire\n userId\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateVerification>\ntype Result = ResultOf<typeof updateVerification>['accountUpdateVerification']\n\nexport function useVerification() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().verification().update(),\n mutationFn: async ({ userId, secret }) => {\n if (!userId || !secret) {\n throw new Error('Missing userId or secret')\n }\n\n const { data, errors } = await graphql.mutation({\n query: updateVerification,\n variables: {\n userId,\n secret,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateVerification\n },\n onSuccess: async () => {\n queryClient.setQueryData(Keys.account().key(), null)\n },\n })\n\n return { ...queryResult }\n}\n","import { useMemo } from 'react'\nimport type { Browser } from 'appwrite'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarBrowser({\n code,\n width,\n height,\n quality,\n}: {\n code: Browser\n width?: number\n height?: number\n quality?: number\n}) {\n const { avatars } = useAppwrite()\n\n const url = useMemo(\n () => avatars?.getBrowser({ code, width, height, quality }),\n [avatars, code, width, height, quality],\n )\n\n return url\n}\n","import { useMemo } from 'react'\nimport type { CreditCard } from 'appwrite'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarCreditCard({\n code,\n width,\n height,\n quality,\n}: {\n code: CreditCard\n width?: number\n height?: number\n quality?: number\n}) {\n const { avatars } = useAppwrite()\n\n const url = useMemo(\n () => avatars?.getCreditCard({ code, width, height, quality }),\n [avatars, code, width, height, quality],\n )\n\n return url\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarFavicon({ url }: { url: string }) {\n const { avatars } = useAppwrite()\n\n const faviconUrl = useMemo(\n () => avatars?.getFavicon({ url }),\n [avatars, url],\n )\n\n return faviconUrl\n}\n","import { useMemo } from 'react'\nimport type { Flag } from 'appwrite'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarFlag({\n code,\n width,\n height,\n quality,\n}: {\n code: Flag\n width?: number\n height?: number\n quality?: number\n}) {\n const { avatars } = useAppwrite()\n\n const url = useMemo(\n () => avatars?.getFlag({ code, width, height, quality }),\n [avatars, code, width, height, quality],\n )\n\n return url\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarImage({\n url,\n width,\n height,\n}: {\n url: string\n width?: number\n height?: number\n}) {\n const { avatars } = useAppwrite()\n\n const imageUrl = useMemo(\n () => avatars?.getImage({ url, width, height }),\n [avatars, url, width, height],\n )\n\n return imageUrl\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarInitials({\n name,\n width,\n height,\n background,\n}: {\n name?: string\n width?: number\n height?: number\n background?: string\n} = {}) {\n const { avatars } = useAppwrite()\n\n const url = useMemo(\n () => avatars?.getInitials({ name, width, height, background }),\n [avatars, name, width, height, background],\n )\n\n return url\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarQR({\n text,\n size,\n margin,\n download,\n}: {\n text: string\n size?: number\n margin?: number\n download?: boolean\n}) {\n const { avatars } = useAppwrite()\n\n const url = useMemo(\n () => avatars?.getQR({ text, size, margin, download }),\n [avatars, text, size, margin, download],\n )\n\n return url\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarScreenshot({\n url,\n width,\n height,\n}: {\n url: string\n width?: number\n height?: number\n}) {\n const { avatars } = useAppwrite()\n\n const screenshotUrl = useMemo(\n () => avatars?.getScreenshot({ url, width, height }),\n [avatars, url, width, height],\n )\n\n return screenshotUrl\n}\n","import { Query } from 'appwrite'\n\nexport function mergeFieldsQuery(queries: string[], fields?: string[]): string[] {\n if (!fields || fields.length === 0) return queries\n return [Query.select(fields), ...queries]\n}\n","import { graphql as gql } from 'gql.tada'\n\nimport type { Collection, Document } from './types'\nimport { mergeFieldsQuery } from './utils'\nimport type { AppwriteClient } from '../client'\nimport { Keys } from '../query/Keys'\n\ntype DocumentParams<TDocument = Record<string, unknown>> = {\n databaseId: string\n collectionId: string\n documentId: string\n queries?: string[]\n transactionId?: string\n fields?: (keyof TDocument & string)[]\n}\n\nexport const getDocument = gql(/* GraphQL */ `\n query GetDocument(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $queries: [String!]\n $transactionId: String\n ) {\n databasesGetDocument(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n queries: $queries\n transactionId: $transactionId\n ) {\n _id\n data\n }\n }\n`)\n\nexport function getDocumentQuery<TDocument>(\n client: AppwriteClient,\n {\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n }: DocumentParams<TDocument>,\n) {\n const rawQueries = Array.isArray(queries) ? queries : queries ? [queries] : []\n const mergedQueries = mergeFieldsQuery(rawQueries, fields)\n\n return {\n queryKey: [\n ...Keys.database(databaseId).collection(collectionId).document(documentId).key(),\n ...mergedQueries,\n ] as const,\n queryFn: async () => {\n const { data, errors } = await client.graphql.query({\n query: getDocument,\n variables: {\n databaseId,\n collectionId,\n documentId,\n queries: mergedQueries.length > 0 ? mergedQueries : undefined,\n transactionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n const document = {\n ...data.databasesGetDocument,\n ...(data.databasesGetDocument\n ? (JSON.parse(data.databasesGetDocument.data as string) as TDocument)\n : {}),\n } as unknown as Document<TDocument>\n\n return document\n },\n }\n}\n\nexport const listDocuments = gql(/* GraphQL */ `\n query ListDocuments(\n $databaseId: String!\n $collectionId: String!\n $queries: [String!]\n $transactionId: String\n ) {\n databasesListDocuments(\n databaseId: $databaseId\n collectionId: $collectionId\n queries: $queries\n transactionId: $transactionId\n ) {\n total\n documents {\n _id\n data\n }\n }\n }\n`)\n\nexport function getCollectionQuery<TDocument>(\n client: AppwriteClient,\n {\n databaseId,\n collectionId,\n queries,\n transactionId,\n fields,\n }: Omit<DocumentParams<TDocument>, 'documentId'>,\n) {\n const mergedQueries = mergeFieldsQuery(queries ?? [], fields)\n\n return {\n queryKey: [\n ...Keys.database(databaseId).collection(collectionId).key(),\n ...mergedQueries,\n ] as const,\n queryFn: async () => {\n const { data, errors } = await client.graphql.query({\n query: listDocuments,\n variables: {\n databaseId,\n collectionId,\n queries: mergedQueries,\n transactionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n const documents =\n data.databasesListDocuments?.documents?.map((document) => ({\n ...document,\n ...(document ? (JSON.parse(document.data as string) as TDocument) : {}),\n })) ?? []\n\n return {\n total: data.databasesListDocuments?.total ?? 0,\n documents,\n } as unknown as Collection<TDocument>\n },\n }\n}\n","import { useEffect } from 'react'\nimport { Channel } from 'appwrite'\n\nimport { getCollectionQuery } from './queryOptions'\nimport type { Collection, Document } from './types'\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\nimport { useQueryClient } from '../useQueryClient'\nimport { useSuspenseQuery } from '../useSuspenseQuery'\n\ntype DocumentOperation = 'create' | 'update' | 'delete'\n\ntype CollectionParams<TDocument = Record<string, string | number | boolean | null>> = {\n databaseId: string\n collectionId: string\n queries?: string[]\n transactionId?: string\n subscribe?: boolean\n fields?: (keyof TDocument & string)[]\n}\n\nfunction useCollectionQueryConfig<TDocument>({\n databaseId,\n collectionId,\n queries,\n transactionId,\n fields,\n}: Omit<CollectionParams<TDocument>, 'subscribe'>) {\n const client = useAppwrite()\n\n return getCollectionQuery<TDocument>(client, {\n databaseId,\n collectionId,\n queries,\n transactionId,\n fields,\n })\n}\n\nfunction useCollectionRealtime<TDocument>(\n databaseId: string,\n collectionId: string,\n queries: string[],\n subscribe: boolean,\n) {\n const { realtime } = useAppwrite()\n const queryClient = useQueryClient()\n const queriesKey = JSON.stringify(queries)\n\n useEffect(() => {\n if (!subscribe) {\n return\n }\n\n const subscriptionPromise = realtime.subscribe(\n Channel.tablesdb(databaseId).table(collectionId).row(),\n (response) => {\n const [, operation] = response.events[0].match(/\\.(\\w+)$/) as RegExpMatchArray\n const document = response.payload as Document<TDocument>\n\n switch (operation as DocumentOperation) {\n case 'create':\n case 'update':\n case 'delete':\n queryClient.setQueryData(\n Keys.database(databaseId).collection(collectionId).document(document.$id).key(),\n document,\n )\n\n void queryClient.invalidateQueries({\n queryKey: Keys.database(databaseId).collection(collectionId).key(),\n })\n\n break\n }\n },\n )\n\n return () => {\n void subscriptionPromise.then((sub) => sub.close())\n }\n }, [databaseId, collectionId, realtime, queryClient, queriesKey, subscribe])\n}\n\nexport function useCollection<TDocument>(\n {\n databaseId,\n collectionId,\n queries = [],\n transactionId,\n subscribe = true,\n fields,\n }: CollectionParams<TDocument>,\n opts: QueryOptions = {},\n) {\n const config = useCollectionQueryConfig<TDocument>({\n databaseId,\n collectionId,\n queries,\n transactionId,\n fields,\n })\n\n const collection = useQuery<Collection<TDocument>, AppwriteException[], Collection<TDocument>>({\n ...config,\n ...opts,\n })\n\n useCollectionRealtime<TDocument>(databaseId, collectionId, queries, subscribe)\n\n return {\n ...collection,\n documents: collection.data?.documents,\n total: collection.data?.total,\n }\n}\n\nexport function useSuspenseCollection<TDocument>(\n {\n databaseId,\n collectionId,\n queries,\n transactionId,\n subscribe = true,\n fields,\n }: CollectionParams<TDocument>,\n opts: QueryOptions = {},\n) {\n const config = useCollectionQueryConfig<TDocument>({\n databaseId,\n collectionId,\n queries,\n transactionId,\n fields,\n })\n\n const collection = useSuspenseQuery<\n Collection<TDocument>,\n AppwriteException[],\n Collection<TDocument>\n >({\n ...config,\n ...opts,\n })\n\n useCollectionRealtime<TDocument>(databaseId, collectionId, queries, subscribe)\n\n return {\n ...collection,\n documents: collection.data?.documents,\n total: collection.data?.total,\n }\n}\n","import { useRef, useState } from 'react'\nimport { Query } from 'appwrite'\n\nimport { useCollection, useSuspenseCollection } from './useCollection'\nimport type { QueryOptions } from '../types'\n\ntype PaginationParams<TDocument = Record<string, unknown>> = {\n databaseId: string\n collectionId: string\n queries: string[]\n transactionId?: string\n limit?: number\n fields?: (keyof TDocument & string)[]\n}\n\nfunction usePaginationState(limit: number) {\n const [page, setPage] = useState(1)\n const totalRef = useRef(0)\n const offset = (page - 1) * limit\n\n const nextPage = () => {\n setPage((prevPage) => {\n const currentOffset = (prevPage - 1) * limit\n if (totalRef.current > 0 && currentOffset + limit < totalRef.current) {\n return prevPage + 1\n }\n return prevPage\n })\n }\n\n const previousPage = () => {\n setPage((prevPage) => (prevPage > 1 ? prevPage - 1 : prevPage))\n }\n\n const handlePageChange = (newPage: number) => {\n if (newPage < 1) return\n if (totalRef.current > 0) {\n const maxPage = Math.ceil(totalRef.current / limit)\n if (newPage > maxPage) return\n }\n setPage(newPage)\n }\n\n return { page, offset, totalRef, nextPage, previousPage, handlePageChange }\n}\n\nexport function useCollectionWithPagination<TDocument>(\n {\n databaseId,\n collectionId,\n queries,\n transactionId,\n limit = 25,\n fields,\n }: PaginationParams<TDocument>,\n opts: QueryOptions = {},\n) {\n const { page, offset, totalRef, nextPage, previousPage, handlePageChange } =\n usePaginationState(limit)\n\n const collection = useCollection<TDocument>(\n {\n databaseId,\n collectionId,\n queries: [...queries, Query.limit(limit), Query.offset(offset)],\n transactionId,\n fields,\n },\n opts,\n )\n\n const total = collection.data?.total ?? 0\n totalRef.current = total\n\n return {\n documents: collection.data?.documents ?? [],\n total,\n page,\n hasNextPage: total > 0 && offset + limit < total,\n hasPreviousPage: page > 1,\n handlePageChange,\n nextPage,\n previousPage,\n isLoading: collection.isLoading,\n isError: collection.isError,\n error: collection.error,\n isFetching: collection.isFetching,\n }\n}\n\nexport function useSuspenseCollectionWithPagination<TDocument>(\n {\n databaseId,\n collectionId,\n queries,\n transactionId,\n limit = 25,\n fields,\n }: PaginationParams<TDocument>,\n opts: QueryOptions = {},\n) {\n const { page, offset, totalRef, nextPage, previousPage, handlePageChange } =\n usePaginationState(limit)\n\n const collection = useSuspenseCollection<TDocument>(\n {\n databaseId,\n collectionId,\n queries: [...queries, Query.limit(limit), Query.offset(offset)],\n transactionId,\n fields,\n },\n opts,\n )\n\n const total = collection.total ?? 0\n totalRef.current = total\n\n return {\n documents: collection.documents ?? [],\n total,\n page,\n hasNextPage: total > 0 && offset + limit < total,\n hasPreviousPage: page > 1,\n handlePageChange,\n nextPage,\n previousPage,\n isLoading: collection.isLoading,\n isError: collection.isError,\n error: collection.error,\n isFetching: collection.isFetching,\n }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const createDocument = gql(/* GraphQL */ `\n mutation CreateDocument(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $data: Json!\n $permissions: [String!]\n $transactionId: String\n ) {\n databasesCreateDocument(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n data: $data\n permissions: $permissions\n transactionId: $transactionId\n ) {\n _id\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createDocument>\ntype Result = ResultOf<typeof createDocument>['databasesCreateDocument']\n\nexport function useCreateDocument() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<\n Result,\n AppwriteException[],\n Omit<Variables, 'permissions'> & {\n permissions?: string[] | null\n }\n >({\n mutationKey: Keys.databases().collections().documents().create(),\n mutationFn: async ({\n databaseId,\n collectionId,\n documentId,\n data,\n permissions,\n transactionId,\n }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: createDocument,\n variables: {\n databaseId,\n collectionId,\n documentId,\n data: JSON.stringify(data),\n permissions,\n transactionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n return mutationData.databasesCreateDocument\n },\n onSuccess: (result, variables) => {\n const documentKeyPrefix = Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(result._id)\n .key()\n\n void queryClient.invalidateQueries({\n queryKey: Keys.database(variables.databaseId).collection(variables.collectionId).key(),\n })\n\n queryClient.setQueryData<Variables>(documentKeyPrefix, {\n ...variables,\n ...(variables.data as Record<string, unknown>),\n })\n },\n })\n\n return mutationResult\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst createOperations = gql(/* GraphQL */ `\n mutation CreateOperations($transactionId: String!, $operations: [String!]) {\n databasesCreateOperations(transactionId: $transactionId, operations: $operations) {\n _id\n status\n operations\n expiresAt\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createOperations>\ntype Result = ResultOf<typeof createOperations>['databasesCreateOperations']\n\nexport function useCreateOperations() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.databases().transactions().operations().create(),\n mutationFn: async ({ transactionId, operations }) => {\n const { data, errors } = await graphql.mutation({\n query: createOperations,\n variables: { transactionId, operations },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.databasesCreateOperations\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.databases().transaction(variables.transactionId).key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst createTransaction = gql(/* GraphQL */ `\n mutation CreateTransaction($ttl: Int) {\n databasesCreateTransaction(ttl: $ttl) {\n _id\n status\n operations\n expiresAt\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createTransaction>\ntype Result = ResultOf<typeof createTransaction>['databasesCreateTransaction']\n\nexport function useCreateTransaction() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.databases().transactions().create(),\n mutationFn: async ({ ttl } = {}) => {\n const { data, errors } = await graphql.mutation({\n query: createTransaction,\n variables: { ttl },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.databasesCreateTransaction\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({\n queryKey: Keys.databases().transactions().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const decrementDocumentAttribute = gql(/* GraphQL */ `\n mutation DecrementDocumentAttribute(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $attribute: String!\n $value: Int\n $min: Int\n $transactionId: String\n ) {\n databasesDecrementDocumentAttribute(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n attribute: $attribute\n value: $value\n min: $min\n transactionId: $transactionId\n ) {\n _id\n data\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof decrementDocumentAttribute>\ntype Result = ResultOf<typeof decrementDocumentAttribute>['databasesDecrementDocumentAttribute']\n\nexport function useDecrementAttribute() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<\n Result,\n AppwriteException[],\n Variables,\n {\n previousEntries: [queryKey: readonly unknown[], data: unknown][]\n documentKeyPrefix: readonly unknown[]\n }\n >({\n mutationKey: [...Keys.databases().transactions().operations().key(), 'decrementAttribute'],\n mutationFn: async ({\n databaseId,\n collectionId,\n documentId,\n attribute,\n value,\n min,\n transactionId,\n }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: decrementDocumentAttribute,\n variables: { databaseId, collectionId, documentId, attribute, value, min, transactionId },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData.databasesDecrementDocumentAttribute\n },\n onMutate: async (variables) => {\n const documentKeyPrefix = Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(variables.documentId)\n .key()\n\n await queryClient.cancelQueries({ queryKey: documentKeyPrefix })\n\n const previousEntries = queryClient.getQueriesData({ queryKey: documentKeyPrefix })\n\n queryClient.setQueryData<Variables>(documentKeyPrefix, (old) => {\n if (!old) return old\n const current = (old[variables.attribute] as number) ?? 0\n const decrement = variables.value ?? 1\n const newValue =\n variables.min != null ? Math.max(current - decrement, variables.min) : current - decrement\n\n return { ...old, [variables.attribute]: newValue }\n })\n\n return { previousEntries, documentKeyPrefix }\n },\n onError: (_, __, context) => {\n if (context?.previousEntries) {\n for (const [key, data] of context.previousEntries) {\n queryClient.setQueryData(key, data)\n }\n }\n },\n onSettled: (_, __, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.database(variables.databaseId).collection(variables.collectionId).key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const deleteDocument = gql(/* GraphQL */ `\n mutation DeleteDocument(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $transactionId: String\n ) {\n databasesDeleteDocument(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n transactionId: $transactionId\n ) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteDocument>\ntype Result = ResultOf<typeof deleteDocument>['databasesDeleteDocument']\n\nexport function useDeleteDocument() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<\n Result,\n AppwriteException[],\n Variables,\n {\n previousEntries: [queryKey: readonly unknown[], data: unknown][]\n documentKeyPrefix: readonly unknown[]\n }\n >({\n mutationKey: Keys.databases().collections().documents().delete(),\n mutationFn: async ({ databaseId, collectionId, documentId, transactionId }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: deleteDocument,\n variables: {\n databaseId,\n collectionId,\n documentId,\n transactionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData?.databasesDeleteDocument ?? { status: '' }\n },\n onMutate: async (variables) => {\n const documentKeyPrefix = Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(variables.documentId)\n .key()\n\n await queryClient.cancelQueries({ queryKey: documentKeyPrefix })\n\n const previousEntries = queryClient.getQueriesData({ queryKey: documentKeyPrefix })\n\n queryClient.removeQueries({ queryKey: documentKeyPrefix })\n\n return { previousEntries, documentKeyPrefix }\n },\n onError: (_, __, context) => {\n if (context?.previousEntries) {\n for (const [key, data] of context.previousEntries) {\n queryClient.setQueryData(key, data)\n }\n }\n },\n onSettled: (_, __, variables) => {\n queryClient.removeQueries({\n queryKey: Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(variables.documentId)\n .key(),\n })\n void queryClient.invalidateQueries({\n queryKey: Keys.database(variables.databaseId).collection(variables.collectionId).key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst deleteTransaction = gql(/* GraphQL */ `\n mutation DeleteTransaction($transactionId: String!) {\n databasesDeleteTransaction(transactionId: $transactionId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteTransaction>\ntype Result = ResultOf<typeof deleteTransaction>['databasesDeleteTransaction']\n\nexport function useDeleteTransaction() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.databases().transactions().delete(),\n mutationFn: async ({ transactionId }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteTransaction,\n variables: { transactionId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.databasesDeleteTransaction ?? { status: '' }\n },\n onSuccess: (_, variables) => {\n queryClient.removeQueries({\n queryKey: Keys.databases().transaction(variables.transactionId).key(),\n })\n void queryClient.invalidateQueries({\n queryKey: Keys.databases().transactions().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import { useEffect } from 'react'\nimport { Channel } from 'appwrite'\nimport type { VariablesOf } from 'gql.tada'\n\nimport type { getDocument } from './queryOptions'\nimport { getDocumentQuery } from './queryOptions'\nimport type { Document } from './types'\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\nimport { useQueryClient } from '../useQueryClient'\nimport { useSuspenseQuery } from '../useSuspenseQuery'\n\ntype Variables = VariablesOf<typeof getDocument>\n\ntype DocumentParams<TDocument = Record<string, unknown>> = Variables & {\n fields?: (keyof TDocument & string)[]\n}\n\nfunction useDocumentQueryConfig<TDocument>({\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n}: DocumentParams<TDocument>) {\n const client = useAppwrite()\n\n return getDocumentQuery<TDocument>(client, {\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n })\n}\n\nfunction useDocumentRealtime(\n databaseId: string,\n collectionId: string,\n documentId: string,\n queriesKey: string,\n) {\n const { realtime } = useAppwrite()\n const queryClient = useQueryClient()\n\n useEffect(() => {\n const subscriptionPromise = realtime.subscribe(\n Channel.tablesdb(databaseId).table(collectionId).row(documentId).update(),\n (response) => {\n queryClient.setQueryData(\n Keys.database(databaseId).collection(collectionId).document(documentId).key(),\n response.payload,\n )\n },\n )\n\n return () => {\n void subscriptionPromise.then((sub) => sub.close())\n }\n }, [databaseId, collectionId, documentId, realtime, queryClient, queriesKey])\n}\n\nexport function useDocument<TDocument>(\n {\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n }: DocumentParams<TDocument>,\n opts: QueryOptions = {},\n) {\n const config = useDocumentQueryConfig<TDocument>({\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n })\n const queriesKey = JSON.stringify(queries)\n\n const queryResult = useQuery<Document<TDocument>, AppwriteException[], Document<TDocument>>({\n ...config,\n ...opts,\n })\n\n useDocumentRealtime(databaseId, collectionId, documentId, queriesKey)\n\n return { ...queryResult }\n}\n\nexport function useSuspenseDocument<TDocument>(\n {\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n }: DocumentParams<TDocument>,\n opts: QueryOptions = {},\n) {\n const config = useDocumentQueryConfig<TDocument>({\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n })\n const queriesKey = JSON.stringify(queries)\n\n const queryResult = useSuspenseQuery<\n Document<TDocument>,\n AppwriteException[],\n Document<TDocument>\n >({ ...config, ...opts })\n\n useDocumentRealtime(databaseId, collectionId, documentId, queriesKey)\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getTransaction = gql(/* GraphQL */ `\n query GetTransaction($transactionId: String!) {\n databasesGetTransaction(transactionId: $transactionId) {\n _id\n _createdAt\n _updatedAt\n status\n operations\n expiresAt\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof getTransaction>\ntype Result = ResultOf<typeof getTransaction>['databasesGetTransaction']\n\nexport function useGetTransaction({ transactionId }: Variables, opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.databases().transaction(transactionId).key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getTransaction,\n variables: { transactionId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.databasesGetTransaction\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const incrementDocumentAttribute = gql(/* GraphQL */ `\n mutation IncrementDocumentAttribute(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $attribute: String!\n $value: Int\n $max: Int\n $transactionId: String\n ) {\n databasesIncrementDocumentAttribute(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n attribute: $attribute\n value: $value\n max: $max\n transactionId: $transactionId\n ) {\n _id\n data\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof incrementDocumentAttribute>\ntype Result = ResultOf<typeof incrementDocumentAttribute>['databasesIncrementDocumentAttribute']\n\nexport function useIncrementAttribute() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<\n Result,\n AppwriteException[],\n Variables,\n {\n previousEntries: [queryKey: readonly unknown[], data: unknown][]\n documentKeyPrefix: readonly unknown[]\n }\n >({\n mutationKey: [...Keys.databases().transactions().operations().key(), 'incrementAttribute'],\n mutationFn: async ({\n databaseId,\n collectionId,\n documentId,\n attribute,\n value,\n max,\n transactionId,\n }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: incrementDocumentAttribute,\n variables: { databaseId, collectionId, documentId, attribute, value, max, transactionId },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData.databasesIncrementDocumentAttribute\n },\n onMutate: async (variables) => {\n const documentKeyPrefix = Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(variables.documentId)\n .key()\n\n await queryClient.cancelQueries({ queryKey: documentKeyPrefix })\n\n const previousEntries = queryClient.getQueriesData({ queryKey: documentKeyPrefix })\n\n queryClient.setQueryData<Variables>(documentKeyPrefix, (old) => {\n if (!old) return old\n const current = (old[variables.attribute] as number) ?? 0\n const increment = variables.value ?? 1\n const newValue =\n variables.max != null ? Math.min(current + increment, variables.max) : current + increment\n\n return { ...old, [variables.attribute]: newValue }\n })\n\n return { previousEntries, documentKeyPrefix }\n },\n onError: (_, __, context) => {\n if (context?.previousEntries) {\n for (const [key, data] of context.previousEntries) {\n queryClient.setQueryData(key, data)\n }\n }\n },\n onSettled: (_, __, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.database(variables.databaseId).collection(variables.collectionId).key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { Query } from 'appwrite'\n\nimport type { Document } from './types'\nimport { useCollection } from './useCollection'\n\nexport function useInfiniteCollection<TDocument>({\n databaseId,\n collectionId,\n queries,\n transactionId,\n limit = 25,\n subscribe = true,\n fields,\n}: {\n databaseId: string\n collectionId: string\n queries: string[]\n transactionId?: string\n limit?: number\n subscribe?: boolean\n fields?: (keyof TDocument & string)[]\n}) {\n const [page, setPage] = useState(1)\n const [accumulated, setAccumulated] = useState<Document<TDocument>[]>([])\n\n const offset = (page - 1) * limit\n const paginatedQueries = [...queries, Query.limit(limit), Query.offset(offset)]\n\n const collection = useCollection<TDocument>({\n databaseId,\n collectionId,\n queries: paginatedQueries,\n transactionId,\n subscribe,\n fields,\n })\n\n // Accumulate documents across pages\n useEffect(() => {\n if (collection.documents) {\n if (page === 1) {\n setAccumulated([...collection.documents])\n } else {\n setAccumulated((prev) => {\n // Only append if we don't already have documents for this page\n const expectedLength = (page - 1) * limit + collection.documents!.length\n if (prev.length < expectedLength) {\n return [...prev, ...collection.documents!]\n }\n return prev\n })\n }\n }\n }, [collection.documents, page, limit])\n\n const total = collection.total ?? 0\n const hasNextPage = total > 0 && offset + limit < total\n\n const fetchNextPage = useCallback(() => {\n if (hasNextPage && !collection.isFetching) {\n setPage((prev) => prev + 1)\n }\n }, [hasNextPage, collection.isFetching])\n\n const reset = useCallback(() => {\n setAccumulated([])\n setPage(1)\n }, [])\n\n return {\n documents: accumulated,\n total,\n hasNextPage,\n fetchNextPage,\n isFetchingNextPage: page > 1 && collection.isFetching,\n isLoading: collection.isLoading,\n isError: collection.isError,\n error: collection.error,\n isFetching: collection.isFetching,\n reset,\n }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listTransactions = gql(/* GraphQL */ `\n query ListTransactions($queries: String) {\n databasesListTransactions(queries: $queries) {\n total\n transactions {\n _id\n _createdAt\n _updatedAt\n status\n operations\n expiresAt\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listTransactions>['databasesListTransactions']\n\nexport function useListTransactions(\n { queries }: { queries?: string } = {},\n opts: QueryOptions = {},\n) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: [...Keys.databases().transactions().key(), ...(queries ? [queries] : [])],\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listTransactions,\n variables: { queries },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.databasesListTransactions\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ConflictContext, ConflictStrategy } from './types'\n\n/**\n * Applies a conflict resolution strategy to produce the merged document data\n * that should be sent to the server, or `'abort'` to discard the mutation.\n *\n * @returns The resolved field-level data (not the full document — just the\n * fields to write), or `'abort'` if the mutation should be dropped.\n */\nexport function resolveConflict(\n context: ConflictContext,\n strategy: ConflictStrategy,\n): Record<string, unknown> | 'abort' {\n if (typeof strategy === 'function') {\n return strategy(context)\n }\n\n switch (strategy) {\n case 'last-write-wins':\n return extractChangedFields(context.base, context.local)\n\n case 'server-wins':\n return 'abort'\n\n case 'merge-shallow': {\n const localChanges = extractChangedFields(context.base, context.local)\n const remoteChanges = extractChangedFields(context.base, context.remote)\n\n // Remote changes win where both sides modified the same field\n return { ...localChanges, ...remoteChanges }\n }\n }\n}\n\n/**\n * Returns only the fields in `updated` that differ from `original`.\n */\nfunction extractChangedFields(\n original: Record<string, unknown>,\n updated: Record<string, unknown>,\n): Record<string, unknown> {\n const changes: Record<string, unknown> = {}\n\n for (const key of Object.keys(updated)) {\n if (JSON.stringify(original[key]) !== JSON.stringify(updated[key])) {\n changes[key] = updated[key]\n }\n }\n\n return changes\n}\n","import { Keys } from '../..'\nimport { getDocument } from '../../databases/queryOptions'\nimport { updateDocument } from '../../databases/useUpdateDocument'\nimport { resolveConflict } from '../conflictResolution/resolve'\nimport type { ConflictStrategy } from '../conflictResolution/types'\nimport type { MutationFn, Vars } from '../types'\n\n/**\n * Creates a conflict-aware mutationFn for document updates.\n *\n * When a base snapshot is available (persisted in MutationState.context by\n * useUpdateDocument's onMutate), the function fetches the current remote\n * document, runs the configured conflict resolution strategy, and sends the\n * resolved data. If no base snapshot exists (e.g. the mutation was created\n * while online and executed immediately), it falls through to a normal update.\n */\nexport function conflictAwareUpdate(conflictStrategy: ConflictStrategy): MutationFn {\n return async (client, variables, queryClient) => {\n const { databaseId, collectionId, documentId } = variables as {\n databaseId: string\n collectionId: string\n documentId: string\n }\n\n // Look up the mutation instance to read the persisted onMutate context\n const mutation = queryClient\n .getMutationCache()\n .getAll()\n .find((m) => JSON.stringify(m.state.variables) === JSON.stringify(variables))\n\n const baseSnapshot = (mutation?.state.context as { baseSnapshot?: Record<string, unknown> })\n ?.baseSnapshot\n\n let resolvedData = variables.data as Record<string, unknown>\n if (baseSnapshot) {\n const { data: remoteResult, errors: fetchErrors } = await client.graphql.query({\n query: getDocument,\n variables: { databaseId, collectionId, documentId },\n })\n\n if (fetchErrors) throw fetchErrors\n\n const rawRemote = remoteResult.databasesGetDocument\n const remote = {\n ...rawRemote,\n ...(rawRemote ? (JSON.parse(rawRemote.data as string) as Record<string, unknown>) : {}),\n } as Record<string, unknown>\n delete remote.data // Remove the raw JSON string from the remote document\n delete remote._id // Remove the _id field to avoid confusion during conflict resolution\n\n // Build the \"local\" document: the base with the user's changes applied\n const local = { ...baseSnapshot, ...(variables.data as Record<string, unknown>) }\n\n const result = resolveConflict(\n {\n base: baseSnapshot as never,\n remote: remote as never,\n local: local as never,\n mutationKey: [databaseId, collectionId, documentId],\n },\n conflictStrategy,\n )\n\n if (result === 'abort') {\n await queryClient.setQueryData(\n Keys.database(databaseId).collection(collectionId).document(documentId).key(),\n remote,\n )\n return { _id: documentId }\n }\n\n resolvedData = result\n }\n\n const { data, errors } = await client.graphql.mutation({\n query: updateDocument,\n variables: {\n ...variables,\n data: JSON.stringify(resolvedData.data ?? resolvedData),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any,\n })\n\n const newData = (resolvedData.data ?? resolvedData) as Record<string, unknown>\n delete variables.data\n\n const thing = { ...baseSnapshot, ...newData, _id: documentId }\n\n await queryClient.setQueryData(\n Keys.database(databaseId).collection(collectionId).document(documentId).key(),\n (old: Record<string, unknown> | undefined) =>\n old\n ? {\n ...old,\n ...thing,\n }\n : old,\n )\n\n if (errors) throw errors\n return (data as Vars).databasesUpdateDocument as { _id: string }\n }\n}\n","import { onlineManager } from '@tanstack/react-query'\nimport type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport type { ConflictStrategy } from '../offline/conflictResolution/types'\nimport { conflictAwareUpdate } from '../offline/mutations/conflictAwareUpdate'\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const updateDocument = gql(/* GraphQL */ `\n mutation UpdateDocument(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $data: Json\n $permissions: [String!]\n $transactionId: String\n ) {\n databasesUpdateDocument(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n data: $data\n permissions: $permissions\n transactionId: $transactionId\n ) {\n _id\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateDocument>\ntype Result = ResultOf<typeof updateDocument>['databasesUpdateDocument']\n\ntype UpdateDocumentVariables = Omit<Variables, 'permissions'> & {\n permissions?: string[] | null\n}\n\ntype MutationContext = {\n previousEntries: [queryKey: readonly unknown[], data: unknown][]\n documentKeyPrefix: readonly unknown[]\n baseSnapshot: Record<string, unknown> | undefined\n willPerformOfflineMutation: boolean\n}\n\nexport function useUpdateDocument() {\n const appwrite = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<\n Result,\n AppwriteException[],\n UpdateDocumentVariables,\n MutationContext\n >({\n mutationKey: Keys.databases().collections().documents().update(),\n mutationFn: async (\n { databaseId, collectionId, documentId, data, permissions, transactionId },\n ctx,\n ) => {\n const wasOffline = ctx.meta.willPerformOfflineMutation ?? false\n\n if (ctx.meta.willPerformOfflineMutation != null) {\n delete ctx.meta.willPerformOfflineMutation\n }\n\n if (wasOffline) {\n try {\n const updateData = (await conflictAwareUpdate(\n ctx.meta.conflictStrategy as ConflictStrategy,\n )(\n appwrite,\n { databaseId, collectionId, documentId, data, permissions, transactionId },\n queryClient,\n )) as Result\n\n return updateData\n } catch (error) {\n console.error('Conflict-aware update failed:', error)\n throw error\n }\n }\n\n const { data: mutationData, errors } = await appwrite.graphql.mutation({\n query: updateDocument,\n variables: {\n databaseId,\n collectionId,\n documentId,\n data: JSON.stringify(data),\n permissions,\n transactionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData.databasesUpdateDocument\n },\n onMutate: async (variables, ctx) => {\n const documentKeyPrefix = Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(variables.documentId)\n .key()\n\n await queryClient.cancelQueries({ queryKey: documentKeyPrefix })\n\n const previousEntries = queryClient.getQueriesData({ queryKey: documentKeyPrefix })\n\n // Capture a deep copy of the document before optimistic update.\n // This snapshot is persisted in MutationState.context through\n // dehydration and serves as the \"base\" for three-way conflict\n // resolution when a paused mutation is replayed.\n const baseSnapshot = previousEntries.find(([, data]) => data != null)?.[1] as\n | Record<string, unknown>\n | undefined\n const baseSnapshotCopy = baseSnapshot\n ? (JSON.parse(JSON.stringify(baseSnapshot)) as Record<string, unknown>)\n : undefined\n\n queryClient.setQueryData<UpdateDocumentVariables>(documentKeyPrefix, (old) =>\n old ? { ...old, ...(variables.data as Record<string, unknown>) } : old,\n )\n\n const willPerformOfflineMutation = onlineManager.isOnline() === false\n ctx.meta = { ...ctx.meta, willPerformOfflineMutation }\n\n return {\n previousEntries,\n documentKeyPrefix,\n baseSnapshot: baseSnapshotCopy,\n willPerformOfflineMutation,\n }\n },\n onError: (_, __, context) => {\n if (context?.previousEntries) {\n for (const [key, data] of context.previousEntries) {\n queryClient.setQueryData(key, data)\n }\n }\n },\n onSettled: (_, __, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.database(variables.databaseId).collection(variables.collectionId).key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateTransaction = gql(/* GraphQL */ `\n mutation UpdateTransaction($transactionId: String!, $commit: Boolean, $rollback: Boolean) {\n databasesUpdateTransaction(\n transactionId: $transactionId\n commit: $commit\n rollback: $rollback\n ) {\n _id\n status\n operations\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateTransaction>\ntype Result = ResultOf<typeof updateTransaction>['databasesUpdateTransaction']\n\nexport function useUpdateTransaction() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.databases().transactions().update(),\n mutationFn: async ({ transactionId, commit, rollback }) => {\n const { data, errors } = await graphql.mutation({\n query: updateTransaction,\n variables: { transactionId, commit, rollback },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.databasesUpdateTransaction\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.databases().transaction(variables.transactionId).key(),\n })\n void queryClient.invalidateQueries({\n queryKey: Keys.databases().transactions().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import { onlineManager } from '@tanstack/react-query'\nimport type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport type { ConflictStrategy } from '../offline'\nimport { conflictAwareUpdate } from '../offline/mutations/conflictAwareUpdate'\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const upsertDocument = gql(/* GraphQL */ `\n mutation UpsertDocument(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $data: Json!\n $permissions: [String!]\n $transactionId: String\n ) {\n databasesUpsertDocument(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n data: $data\n permissions: $permissions\n transactionId: $transactionId\n ) {\n _id\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof upsertDocument>\ntype Result = ResultOf<typeof upsertDocument>['databasesUpsertDocument']\n\ntype UpsertDocumentVariables = Omit<Variables, 'permissions'> & {\n permissions?: string[] | null\n}\n\ntype MutationContext = {\n previousEntries: [queryKey: readonly unknown[], data: unknown][]\n documentKeyPrefix: readonly unknown[]\n baseSnapshot: Record<string, unknown> | undefined\n willPerformOfflineMutation: boolean\n}\n\nexport function useUpsertDocument() {\n const appwrite = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<\n Result,\n AppwriteException[],\n UpsertDocumentVariables,\n MutationContext\n >({\n mutationKey: Keys.databases().collections().documents().upsert(),\n mutationFn: async (\n { databaseId, collectionId, documentId, data, permissions, transactionId },\n ctx,\n ) => {\n const wasOffline = ctx.meta.willPerformOfflineMutation ?? false\n\n if (ctx.meta.willPerformOfflineMutation != null) {\n delete ctx.meta.willPerformOfflineMutation\n }\n\n if (wasOffline) {\n try {\n const updateData = (await conflictAwareUpdate(\n ctx.meta.conflictStrategy as ConflictStrategy,\n )(\n appwrite,\n { databaseId, collectionId, documentId, data, permissions, transactionId },\n queryClient,\n )) as Result\n\n return updateData\n } catch (error) {\n console.error('Conflict-aware update failed:', error)\n throw error\n }\n }\n\n const { data: mutationData, errors } = await appwrite.graphql.mutation({\n query: upsertDocument,\n variables: {\n databaseId,\n collectionId,\n documentId,\n data: JSON.stringify(data),\n permissions,\n transactionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData.databasesUpsertDocument\n },\n onMutate: async (variables, ctx) => {\n const documentKeyPrefix = Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(variables.documentId)\n .key()\n\n await queryClient.cancelQueries({ queryKey: documentKeyPrefix })\n\n const previousEntries = queryClient.getQueriesData({ queryKey: documentKeyPrefix })\n\n const baseSnapshot = previousEntries.find(([, data]) => data != null)?.[1] as\n | Record<string, unknown>\n | undefined\n const baseSnapshotCopy = baseSnapshot\n ? (JSON.parse(JSON.stringify(baseSnapshot)) as Record<string, unknown>)\n : undefined\n\n queryClient.setQueryData<UpsertDocumentVariables>(documentKeyPrefix, (old) =>\n old ? { ...old, ...(variables.data as Record<string, unknown>) } : old,\n )\n\n const willPerformOfflineMutation = onlineManager.isOnline() === false\n ctx.meta = { ...ctx.meta, willPerformOfflineMutation }\n\n return {\n previousEntries,\n documentKeyPrefix,\n baseSnapshot: baseSnapshotCopy,\n willPerformOfflineMutation,\n }\n },\n onError: (_, __, context) => {\n if (context?.previousEntries) {\n for (const [key, data] of context.previousEntries) {\n queryClient.setQueryData(key, data)\n }\n }\n },\n onSettled: (_, __, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.database(variables.databaseId).collection(variables.collectionId).key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getLocale = gql(/* GraphQL */ `\n query GetLocale {\n localeGet {\n ip\n countryCode\n country\n continentCode\n continent\n eu\n currency\n }\n }\n`)\n\ntype Result = ResultOf<typeof getLocale>['localeGet']\n\nexport function useLocale() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getLocale,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeGet\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listLocaleCodes = gql(/* GraphQL */ `\n query ListLocaleCodes {\n localeListCodes {\n total\n localeCodes {\n code\n name\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listLocaleCodes>['localeListCodes']\n\nexport function useLocaleCodes() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().codes(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listLocaleCodes,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListCodes\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listContinents = gql(/* GraphQL */ `\n query ListContinents {\n localeListContinents {\n total\n continents {\n name\n code\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listContinents>['localeListContinents']\n\nexport function useLocaleContinents() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().continents(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listContinents,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListContinents\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listCountries = gql(/* GraphQL */ `\n query ListCountries {\n localeListCountries {\n total\n countries {\n name\n code\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listCountries>['localeListCountries']\n\nexport function useLocaleCountries() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().countries(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listCountries,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListCountries\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listCountriesEU = gql(/* GraphQL */ `\n query ListCountriesEU {\n localeListCountriesEU {\n total\n countries {\n name\n code\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listCountriesEU>['localeListCountriesEU']\n\nexport function useLocaleCountriesEU() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().countriesEU(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listCountriesEU,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListCountriesEU\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listCountriesPhones = gql(/* GraphQL */ `\n query ListCountriesPhones {\n localeListCountriesPhones {\n total\n phones {\n code\n countryCode\n countryName\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listCountriesPhones>['localeListCountriesPhones']\n\nexport function useLocaleCountriesPhones() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().countriesPhones(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listCountriesPhones,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListCountriesPhones\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listCurrencies = gql(/* GraphQL */ `\n query ListCurrencies {\n localeListCurrencies {\n total\n currencies {\n symbol\n name\n symbolNative\n decimalDigits\n rounding\n code\n namePlural\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listCurrencies>['localeListCurrencies']\n\nexport function useLocaleCurrencies() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().currencies(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listCurrencies,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListCurrencies\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listLanguages = gql(/* GraphQL */ `\n query ListLanguages {\n localeListLanguages {\n total\n languages {\n name\n code\n nativeName\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listLanguages>['localeListLanguages']\n\nexport function useLocaleLanguages() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().languages(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listLanguages,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListLanguages\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nexport const createSubscriber = gql(/* GraphQL */ `\n mutation CreateSubscriber($subscriberId: String!, $topicId: String!, $targetId: String!) {\n messagingCreateSubscriber(subscriberId: $subscriberId, topicId: $topicId, targetId: $targetId) {\n _id\n _createdAt\n _updatedAt\n targetId\n userId\n userName\n topicId\n providerType\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createSubscriber>\ntype Result = ResultOf<typeof createSubscriber>['messagingCreateSubscriber']\n\nexport function useCreateSubscriber() {\n const { graphql } = useAppwrite()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.messaging().subscriber().create(),\n mutationFn: async ({ subscriberId, topicId, targetId }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: createSubscriber,\n variables: {\n subscriberId,\n topicId,\n targetId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData?.messagingCreateSubscriber\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nexport const deleteSubscriber = gql(/* GraphQL */ `\n mutation DeleteSubscriber($topicId: String!, $subscriberId: String!) {\n messagingDeleteSubscriber(topicId: $topicId, subscriberId: $subscriberId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteSubscriber>\ntype Result = ResultOf<typeof deleteSubscriber>['messagingDeleteSubscriber']\n\nexport function useDeleteSubscriber() {\n const { graphql } = useAppwrite()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.messaging().subscriber().delete(),\n mutationFn: async ({ topicId, subscriberId }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: deleteSubscriber,\n variables: {\n topicId,\n subscriberId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData?.messagingDeleteSubscriber ?? { status: '' }\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getFile = gql(/* GraphQL */ `\n query GetFile($bucketId: String!, $fileId: String!) {\n storageGetFile(bucketId: $bucketId, fileId: $fileId) {\n _id\n bucketId\n _createdAt\n _updatedAt\n _permissions\n name\n signature\n mimeType\n sizeOriginal\n chunksTotal\n chunksUploaded\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof getFile>\ntype Result = ResultOf<typeof getFile>['storageGetFile']\n\nexport function useFile({ bucketId, fileId }: Variables) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.bucket(bucketId).file(fileId).key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getFile,\n variables: { bucketId, fileId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.storageGetFile\n },\n })\n\n return { ...queryResult }\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useFileDownload({\n bucketId,\n fileId,\n token,\n}: {\n bucketId: string\n fileId: string\n token?: string\n}) {\n const { storage } = useAppwrite()\n\n const url = useMemo(\n () => storage?.getFileDownload({ bucketId, fileId, token }),\n [storage, bucketId, fileId, token],\n )\n\n return url\n}\n","import { useMemo } from 'react'\nimport type { ImageFormat, ImageGravity } from 'appwrite'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useFilePreview({\n bucketId,\n fileId,\n width,\n height,\n gravity,\n quality,\n borderWidth,\n borderColor,\n borderRadius,\n opacity,\n rotation,\n background,\n output,\n token,\n}: {\n bucketId: string\n fileId: string\n width?: number\n height?: number\n gravity?: ImageGravity\n quality?: number\n borderWidth?: number\n borderColor?: string\n borderRadius?: number\n opacity?: number\n rotation?: number\n background?: string\n output?: ImageFormat\n token?: string\n}) {\n const { storage } = useAppwrite()\n\n const url = useMemo(\n () =>\n storage?.getFilePreview({\n bucketId,\n fileId,\n width,\n height,\n gravity,\n quality,\n borderWidth,\n borderColor,\n borderRadius,\n opacity,\n rotation,\n background,\n output,\n token,\n }),\n [\n storage,\n bucketId,\n fileId,\n width,\n height,\n gravity,\n quality,\n borderWidth,\n borderColor,\n borderRadius,\n opacity,\n rotation,\n background,\n output,\n token,\n ],\n )\n\n return url\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useFileView({\n bucketId,\n fileId,\n token,\n}: {\n bucketId: string\n fileId: string\n token?: string\n}) {\n const { storage } = useAppwrite()\n\n const url = useMemo(\n () => storage?.getFileView({ bucketId, fileId, token }),\n [storage, bucketId, fileId, token],\n )\n\n return url\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listFiles = gql(/* GraphQL */ `\n query ListFiles($bucketId: String!, $queries: [String!], $search: String) {\n storageListFiles(bucketId: $bucketId, queries: $queries, search: $search) {\n total\n files {\n _id\n bucketId\n _createdAt\n _updatedAt\n _permissions\n name\n signature\n mimeType\n sizeOriginal\n chunksTotal\n chunksUploaded\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listFiles>['storageListFiles']\n\nexport function useFiles({\n bucketId,\n queries,\n search,\n}: {\n bucketId: string\n queries?: string[]\n search?: string\n}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: [...Keys.bucket(bucketId).files().key(), ...(queries ?? []), ...(search ? [search] : [])],\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listFiles,\n variables: { bucketId, queries, search },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.storageListFiles\n },\n })\n\n return { ...queryResult }\n}\n","import { Keys } from '../query/Keys'\nimport type { AppwriteException, Models } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\ntype CreateFileVariables = {\n bucketId: string\n fileId: string\n file: File\n permissions?: string[]\n onProgress?: (progress: {\n $id: string\n progress: number\n sizeUploaded: number\n chunksTotal: number\n chunksUploaded: number\n }) => void\n}\n\nexport function useCreateFile() {\n const { storage } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Models.File, AppwriteException[], CreateFileVariables>({\n mutationKey: Keys.buckets().files().create(),\n mutationFn: async ({ bucketId, fileId, file, permissions, onProgress }) => {\n return storage.createFile({\n bucketId,\n fileId,\n file,\n permissions,\n onProgress,\n })\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.bucket(variables.bucketId).files().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const updateFile = gql(/* GraphQL */ `\n mutation UpdateFile(\n $bucketId: String!\n $fileId: String!\n $name: String\n $permissions: [String!]\n ) {\n storageUpdateFile(\n bucketId: $bucketId\n fileId: $fileId\n name: $name\n permissions: $permissions\n ) {\n _id\n bucketId\n name\n _permissions\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateFile>\ntype Result = ResultOf<typeof updateFile>['storageUpdateFile']\n\nexport function useUpdateFile() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.buckets().files().update(),\n mutationFn: async ({ bucketId, fileId, name, permissions }) => {\n const { data, errors } = await graphql.mutation({\n query: updateFile,\n variables: { bucketId, fileId, name, permissions },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.storageUpdateFile\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.bucket(variables.bucketId).files().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const deleteFile = gql(/* GraphQL */ `\n mutation DeleteFile($bucketId: String!, $fileId: String!) {\n storageDeleteFile(bucketId: $bucketId, fileId: $fileId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteFile>\ntype Result = ResultOf<typeof deleteFile>['storageDeleteFile']\n\nexport function useDeleteFile() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.buckets().files().delete(),\n mutationFn: async ({ bucketId, fileId }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteFile,\n variables: { bucketId, fileId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.storageDeleteFile ?? { status: '' }\n },\n onSuccess: (_, variables) => {\n queryClient.removeQueries({\n queryKey: Keys.bucket(variables.bucketId).file(variables.fileId).key(),\n })\n void queryClient.invalidateQueries({\n queryKey: Keys.bucket(variables.bucketId).files().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import { graphql as gql } from 'gql.tada'\n\nimport type { AppwriteClient } from '../client'\nimport { Keys } from '../query/Keys'\n\nexport const getTeam = gql(/* GraphQL */ `\n query GetTeam($teamId: String!) {\n teamsGet(teamId: $teamId) {\n _id\n _createdAt\n _updatedAt\n name\n total\n prefs {\n data\n }\n }\n }\n`)\n\nexport function teamQueryOptions(client: AppwriteClient, { teamId }: { teamId: string }) {\n return {\n queryKey: Keys.team(teamId).key(),\n queryFn: async () => {\n const { data, errors } = await client.graphql.query({\n query: getTeam,\n variables: { teamId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsGet\n },\n }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\n\nimport type { getTeam } from './queryOptions'\nimport { teamQueryOptions } from './queryOptions'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\ntype Variables = VariablesOf<typeof getTeam>\ntype Result = ResultOf<typeof getTeam>['teamsGet']\n\nexport function useTeam({ teamId }: Variables, opts: QueryOptions = {}) {\n const client = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n ...teamQueryOptions(client, { teamId }),\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listTeams = gql(/* GraphQL */ `\n query ListTeams($queries: [String!], $search: String) {\n teamsList(queries: $queries, search: $search) {\n total\n teams {\n _id\n _createdAt\n _updatedAt\n name\n total\n prefs {\n data\n }\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listTeams>['teamsList']\n\nexport function useTeams(\n {\n queries,\n search,\n }: {\n queries?: string[]\n search?: string\n } = {},\n opts: QueryOptions = {},\n) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: [...Keys.teams().key(), ...(queries ?? []), ...(search ? [search] : [])],\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listTeams,\n variables: { queries, search },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsList\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getTeamPrefs = gql(/* GraphQL */ `\n query GetTeamPrefs($teamId: String!) {\n teamsGetPrefs(teamId: $teamId) {\n data\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof getTeamPrefs>\ntype Result = ResultOf<typeof getTeamPrefs>['teamsGetPrefs']\n\nexport function useTeamPrefs({ teamId }: Variables, opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.team(teamId).teamPrefs().key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getTeamPrefs,\n variables: { teamId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsGetPrefs\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getMembership = gql(/* GraphQL */ `\n query GetMembership($teamId: String!, $membershipId: String!) {\n teamsGetMembership(teamId: $teamId, membershipId: $membershipId) {\n _id\n _createdAt\n _updatedAt\n userId\n userName\n userEmail\n teamId\n teamName\n invited\n joined\n confirm\n mfa\n roles\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof getMembership>\ntype Result = ResultOf<typeof getMembership>['teamsGetMembership']\n\nexport function useTeamMembership({ teamId, membershipId }: Variables, opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.team(teamId).membership(membershipId).key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getMembership,\n variables: { teamId, membershipId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsGetMembership\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listMemberships = gql(/* GraphQL */ `\n query ListMemberships($teamId: String!, $queries: [String!], $search: String) {\n teamsListMemberships(teamId: $teamId, queries: $queries, search: $search) {\n total\n memberships {\n _id\n _createdAt\n _updatedAt\n userId\n userName\n userEmail\n teamId\n teamName\n invited\n joined\n confirm\n mfa\n roles\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listMemberships>['teamsListMemberships']\n\nexport function useTeamMemberships(\n {\n teamId,\n queries,\n search,\n }: {\n teamId: string\n queries?: string[]\n search?: string\n },\n opts: QueryOptions = {},\n) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: [\n ...Keys.team(teamId).memberships().key(),\n ...(queries ?? []),\n ...(search ? [search] : []),\n ],\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listMemberships,\n variables: { teamId, queries, search },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsListMemberships\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const createTeam = gql(/* GraphQL */ `\n mutation CreateTeam($teamId: String!, $name: String!, $roles: [String!]) {\n teamsCreate(teamId: $teamId, name: $name, roles: $roles) {\n _id\n name\n total\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createTeam>\ntype Result = ResultOf<typeof createTeam>['teamsCreate']\n\nexport function useCreateTeam() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().create(),\n mutationFn: async ({ teamId, name, roles }) => {\n const { data, errors } = await graphql.mutation({\n query: createTeam,\n variables: { teamId, name, roles },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsCreate\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.teams().key() })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const updateTeamName = gql(/* GraphQL */ `\n mutation UpdateTeamName($teamId: String!, $name: String!) {\n teamsUpdateName(teamId: $teamId, name: $name) {\n _id\n name\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateTeamName>\ntype Result = ResultOf<typeof updateTeamName>['teamsUpdateName']\n\nexport function useUpdateTeamName() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().teamName().update(),\n mutationFn: async ({ teamId, name }) => {\n const { data, errors } = await graphql.mutation({\n query: updateTeamName,\n variables: { teamId, name },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsUpdateName\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({ queryKey: Keys.team(variables.teamId).key() })\n void queryClient.invalidateQueries({ queryKey: Keys.teams().key() })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const updateTeamPrefs = gql(/* GraphQL */ `\n mutation UpdateTeamPrefs($teamId: String!, $prefs: Assoc!) {\n teamsUpdatePrefs(teamId: $teamId, prefs: $prefs) {\n data\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateTeamPrefs>\ntype Result = ResultOf<typeof updateTeamPrefs>['teamsUpdatePrefs']\n\nexport function useUpdateTeamPrefs() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().teamPrefs().update(),\n mutationFn: async ({ teamId, prefs }) => {\n const { data, errors } = await graphql.mutation({\n query: updateTeamPrefs,\n variables: { teamId, prefs },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsUpdatePrefs\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({ queryKey: Keys.team(variables.teamId).key() })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const deleteTeam = gql(/* GraphQL */ `\n mutation DeleteTeam($teamId: String!) {\n teamsDelete(teamId: $teamId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteTeam>\ntype Result = ResultOf<typeof deleteTeam>['teamsDelete']\n\nexport function useDeleteTeam() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().delete(),\n mutationFn: async ({ teamId }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteTeam,\n variables: { teamId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.teamsDelete ?? { status: '' }\n },\n onSuccess: (_, variables) => {\n queryClient.removeQueries({ queryKey: Keys.team(variables.teamId).key() })\n void queryClient.invalidateQueries({ queryKey: Keys.teams().key() })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const createMembership = gql(/* GraphQL */ `\n mutation CreateMembership(\n $teamId: String!\n $roles: [String!]!\n $email: String\n $userId: String\n $phone: String\n $url: String\n $name: String\n ) {\n teamsCreateMembership(\n teamId: $teamId\n roles: $roles\n email: $email\n userId: $userId\n phone: $phone\n url: $url\n name: $name\n ) {\n _id\n userId\n teamId\n roles\n confirm\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createMembership>\ntype Result = ResultOf<typeof createMembership>['teamsCreateMembership']\n\nexport function useCreateMembership() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().memberships().create(),\n mutationFn: async ({ teamId, roles, email, userId, phone, url, name }) => {\n const { data, errors } = await graphql.mutation({\n query: createMembership,\n variables: { teamId, roles, email, userId, phone, url, name },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsCreateMembership\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.team(variables.teamId).memberships().key(),\n })\n void queryClient.invalidateQueries({ queryKey: Keys.team(variables.teamId).key() })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const updateMembership = gql(/* GraphQL */ `\n mutation UpdateMembership($teamId: String!, $membershipId: String!, $roles: [String!]!) {\n teamsUpdateMembership(teamId: $teamId, membershipId: $membershipId, roles: $roles) {\n _id\n roles\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateMembership>\ntype Result = ResultOf<typeof updateMembership>['teamsUpdateMembership']\n\nexport function useUpdateMembership() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().memberships().update(),\n mutationFn: async ({ teamId, membershipId, roles }) => {\n const { data, errors } = await graphql.mutation({\n query: updateMembership,\n variables: { teamId, membershipId, roles },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsUpdateMembership\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.team(variables.teamId).memberships().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateMembershipStatus = gql(/* GraphQL */ `\n mutation UpdateMembershipStatus(\n $teamId: String!\n $membershipId: String!\n $userId: String!\n $secret: String!\n ) {\n teamsUpdateMembershipStatus(\n teamId: $teamId\n membershipId: $membershipId\n userId: $userId\n secret: $secret\n ) {\n _id\n confirm\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateMembershipStatus>\ntype Result = ResultOf<typeof updateMembershipStatus>['teamsUpdateMembershipStatus']\n\nexport function useUpdateMembershipStatus() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().membershipStatus().update(),\n mutationFn: async ({ teamId, membershipId, userId, secret }) => {\n const { data, errors } = await graphql.mutation({\n query: updateMembershipStatus,\n variables: { teamId, membershipId, userId, secret },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsUpdateMembershipStatus\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.team(variables.teamId).memberships().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const deleteMembership = gql(/* GraphQL */ `\n mutation DeleteMembership($teamId: String!, $membershipId: String!) {\n teamsDeleteMembership(teamId: $teamId, membershipId: $membershipId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteMembership>\ntype Result = ResultOf<typeof deleteMembership>['teamsDeleteMembership']\n\nexport function useDeleteMembership() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().memberships().delete(),\n mutationFn: async ({ teamId, membershipId }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteMembership,\n variables: { teamId, membershipId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.teamsDeleteMembership ?? { status: '' }\n },\n onSuccess: (_, variables) => {\n queryClient.removeQueries({\n queryKey: Keys.team(variables.teamId).membership(variables.membershipId).key(),\n })\n void queryClient.invalidateQueries({\n queryKey: Keys.team(variables.teamId).memberships().key(),\n })\n void queryClient.invalidateQueries({ queryKey: Keys.team(variables.teamId).key() })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { QueryTypes } from 'appwrite'\nimport { Query } from 'appwrite'\n\ntype FieldValue<T, K extends keyof T> = T[K]\n\ntype ArrayElement<T> = T extends (infer E)[] ? E : never\n\ntype ContainsValue<T, K extends keyof T> = T[K] extends unknown[]\n ? ArrayElement<T[K]> | ArrayElement<T[K]>[]\n : T[K] extends string\n ? string\n : T[K] | T[K][]\n\nexport class QueryBuilder<T extends Record<string, unknown>> {\n private queries: string[] = []\n\n equal<K extends keyof T & string>(field: K, value: FieldValue<T, K> | FieldValue<T, K>[]): this {\n this.queries.push(Query.equal(field, value as QueryTypes))\n return this\n }\n\n notEqual<K extends keyof T & string>(\n field: K,\n value: FieldValue<T, K> | FieldValue<T, K>[],\n ): this {\n this.queries.push(Query.notEqual(field, value as QueryTypes))\n return this\n }\n\n regex<K extends keyof T & string>(field: K, pattern: string): this {\n this.queries.push(Query.regex(field, pattern))\n return this\n }\n\n lessThan<K extends keyof T & string>(field: K, value: FieldValue<T, K>): this {\n this.queries.push(Query.lessThan(field, value as QueryTypes))\n return this\n }\n\n lessThanEqual<K extends keyof T & string>(field: K, value: FieldValue<T, K>): this {\n this.queries.push(Query.lessThanEqual(field, value as QueryTypes))\n return this\n }\n\n greaterThan<K extends keyof T & string>(field: K, value: FieldValue<T, K>): this {\n this.queries.push(Query.greaterThan(field, value as QueryTypes))\n return this\n }\n\n greaterThanEqual<K extends keyof T & string>(field: K, value: FieldValue<T, K>): this {\n this.queries.push(Query.greaterThanEqual(field, value as QueryTypes))\n return this\n }\n\n isNull<K extends keyof T & string>(field: K): this {\n this.queries.push(Query.isNull(field))\n return this\n }\n\n isNotNull<K extends keyof T & string>(field: K): this {\n this.queries.push(Query.isNotNull(field))\n return this\n }\n\n exists<K extends keyof T & string>(fields: K[]): this {\n this.queries.push(Query.exists(fields))\n return this\n }\n\n notExists<K extends keyof T & string>(fields: K[]): this {\n this.queries.push(Query.notExists(fields))\n return this\n }\n\n between<K extends keyof T & string>(\n field: K,\n start: string | number | bigint,\n end: string | number | bigint,\n ): this {\n this.queries.push(Query.between(field, start, end))\n return this\n }\n\n startsWith<K extends keyof T & string>(field: K, prefix: string): this {\n this.queries.push(Query.startsWith(field, prefix))\n return this\n }\n\n endsWith<K extends keyof T & string>(field: K, suffix: string): this {\n this.queries.push(Query.endsWith(field, suffix))\n return this\n }\n\n select<K extends keyof T & string>(fields: K[]): this {\n this.queries.push(Query.select(fields))\n return this\n }\n\n search<K extends keyof T & string>(field: K, term: string): this {\n this.queries.push(Query.search(field, term))\n return this\n }\n\n orderAsc<K extends keyof T & string>(field: K): this {\n this.queries.push(Query.orderAsc(field))\n return this\n }\n\n orderDesc<K extends keyof T & string>(field: K): this {\n this.queries.push(Query.orderDesc(field))\n return this\n }\n\n orderRandom(): this {\n this.queries.push(Query.orderRandom())\n return this\n }\n\n cursorAfter(id: string): this {\n this.queries.push(Query.cursorAfter(id))\n return this\n }\n\n cursorBefore(id: string): this {\n this.queries.push(Query.cursorBefore(id))\n return this\n }\n\n limit(count: number): this {\n this.queries.push(Query.limit(count))\n return this\n }\n\n offset(count: number): this {\n this.queries.push(Query.offset(count))\n return this\n }\n\n contains<K extends keyof T & string>(field: K, value: ContainsValue<T, K>): this {\n this.queries.push(Query.contains(field, value as string | any[]))\n return this\n }\n\n containsAny<K extends keyof T & string>(field: K, values: ContainsValue<T, K>[]): this {\n this.queries.push(Query.containsAny(field, values as any[]))\n return this\n }\n\n containsAll<K extends keyof T & string>(field: K, values: ContainsValue<T, K>[]): this {\n this.queries.push(Query.containsAll(field, values as any[]))\n return this\n }\n\n notContains<K extends keyof T & string>(field: K, value: ContainsValue<T, K>): this {\n this.queries.push(Query.notContains(field, value as string | any[]))\n return this\n }\n\n notSearch<K extends keyof T & string>(field: K, term: string): this {\n this.queries.push(Query.notSearch(field, term))\n return this\n }\n\n notBetween<K extends keyof T & string>(\n field: K,\n start: string | number | bigint,\n end: string | number | bigint,\n ): this {\n this.queries.push(Query.notBetween(field, start, end))\n return this\n }\n\n notStartsWith<K extends keyof T & string>(field: K, prefix: string): this {\n this.queries.push(Query.notStartsWith(field, prefix))\n return this\n }\n\n notEndsWith<K extends keyof T & string>(field: K, suffix: string): this {\n this.queries.push(Query.notEndsWith(field, suffix))\n return this\n }\n\n createdBefore(date: string): this {\n this.queries.push(Query.createdBefore(date))\n return this\n }\n\n createdAfter(date: string): this {\n this.queries.push(Query.createdAfter(date))\n return this\n }\n\n createdBetween(start: string, end: string): this {\n this.queries.push(Query.createdBetween(start, end))\n return this\n }\n\n updatedBefore(date: string): this {\n this.queries.push(Query.updatedBefore(date))\n return this\n }\n\n updatedAfter(date: string): this {\n this.queries.push(Query.updatedAfter(date))\n return this\n }\n\n updatedBetween(start: string, end: string): this {\n this.queries.push(Query.updatedBetween(start, end))\n return this\n }\n\n or(...queries: ((q: QueryBuilder<T>) => QueryBuilder<T>)[]): this {\n const orQueries = queries.map((fn) => fn(new QueryBuilder<T>()).queries).flat()\n this.queries.push(Query.or(orQueries))\n return this\n }\n\n and(...queries: ((q: QueryBuilder<T>) => QueryBuilder<T>)[]): this {\n const andQueries = queries.map((fn) => fn(new QueryBuilder<T>()).queries).flat()\n this.queries.push(Query.and(andQueries))\n return this\n }\n\n elemMatch<K extends keyof T & string>(field: K, query: QueryBuilder<T>): this {\n this.queries.push(Query.elemMatch(field, query.queries))\n return this\n }\n\n distanceEqual<K extends keyof T & string>(\n field: K,\n latitude: number,\n longitude: number,\n distance: number,\n meters: boolean = true,\n ): this {\n this.queries.push(Query.distanceEqual(field, [latitude, longitude], distance, meters))\n return this\n }\n\n distanceNotEqual<K extends keyof T & string>(\n field: K,\n latitude: number,\n longitude: number,\n distance: number,\n meters: boolean = true,\n ): this {\n this.queries.push(Query.distanceNotEqual(field, [latitude, longitude], distance, meters))\n return this\n }\n\n distanceGreaterThan<K extends keyof T & string>(\n field: K,\n latitude: number,\n longitude: number,\n distance: number,\n meters: boolean = true,\n ): this {\n this.queries.push(Query.distanceGreaterThan(field, [latitude, longitude], distance, meters))\n return this\n }\n\n distanceLessThan<K extends keyof T & string>(\n field: K,\n latitude: number,\n longitude: number,\n distance: number,\n meters: boolean = true,\n ): this {\n this.queries.push(Query.distanceLessThan(field, [latitude, longitude], distance, meters))\n return this\n }\n\n intersects<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.intersects(field, points))\n return this\n }\n\n notIntersects<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.notIntersects(field, points))\n return this\n }\n\n crosses<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.crosses(field, points))\n return this\n }\n\n notCrosses<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.notCrosses(field, points))\n return this\n }\n\n overlaps<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.overlaps(field, points))\n return this\n }\n\n notOverlaps<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.notOverlaps(field, points))\n return this\n }\n\n touches<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.touches(field, points))\n return this\n }\n\n notTouches<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.notTouches(field, points))\n return this\n }\n\n build() {\n return [...this.queries]\n }\n}\n\nexport function q<T extends Record<string, unknown>>(): QueryBuilder<T> {\n return new QueryBuilder<T>()\n}\n","import { timeoutManager } from './timeoutManager'\nimport type {\n DefaultError,\n Enabled,\n FetchStatus,\n MutationKey,\n MutationStatus,\n QueryFunction,\n QueryKey,\n QueryOptions,\n StaleTime,\n StaleTimeFunction,\n} from './types'\nimport type { Mutation } from './mutation'\nimport type { FetchOptions, Query } from './query'\n\n// TYPES\n\ntype DropLast<T extends ReadonlyArray<unknown>> = T extends readonly [\n ...infer R,\n unknown,\n]\n ? readonly [...R]\n : never\n\ntype TuplePrefixes<T extends ReadonlyArray<unknown>> = T extends readonly []\n ? readonly []\n : TuplePrefixes<DropLast<T>> | T\n\nexport interface QueryFilters<TQueryKey extends QueryKey = QueryKey> {\n /**\n * Filter to active queries, inactive queries or all queries\n */\n type?: QueryTypeFilter\n /**\n * Match query key exactly\n */\n exact?: boolean\n /**\n * Include queries matching this predicate function\n */\n predicate?: (query: Query) => boolean\n /**\n * Include queries matching this query key\n */\n queryKey?: TQueryKey | TuplePrefixes<TQueryKey>\n /**\n * Include or exclude stale queries\n */\n stale?: boolean\n /**\n * Include queries matching their fetchStatus\n */\n fetchStatus?: FetchStatus\n}\n\nexport interface MutationFilters<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TOnMutateResult = unknown,\n> {\n /**\n * Match mutation key exactly\n */\n exact?: boolean\n /**\n * Include mutations matching this predicate function\n */\n predicate?: (\n mutation: Mutation<TData, TError, TVariables, TOnMutateResult>,\n ) => boolean\n /**\n * Include mutations matching this mutation key\n */\n mutationKey?: TuplePrefixes<MutationKey>\n /**\n * Filter by mutation status\n */\n status?: MutationStatus\n}\n\nexport type Updater<TInput, TOutput> = TOutput | ((input: TInput) => TOutput)\n\nexport type QueryTypeFilter = 'all' | 'active' | 'inactive'\n\n// UTILS\n\nexport const isServer = typeof window === 'undefined' || 'Deno' in globalThis\n\nexport function noop(): void\nexport function noop(): undefined\nexport function noop() {}\n\nexport function functionalUpdate<TInput, TOutput>(\n updater: Updater<TInput, TOutput>,\n input: TInput,\n): TOutput {\n return typeof updater === 'function'\n ? (updater as (_: TInput) => TOutput)(input)\n : updater\n}\n\nexport function isValidTimeout(value: unknown): value is number {\n return typeof value === 'number' && value >= 0 && value !== Infinity\n}\n\nexport function timeUntilStale(updatedAt: number, staleTime?: number): number {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0)\n}\n\nexport function resolveStaleTime<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n staleTime:\n | undefined\n | StaleTimeFunction<TQueryFnData, TError, TData, TQueryKey>,\n query: Query<TQueryFnData, TError, TData, TQueryKey>,\n): StaleTime | undefined {\n return typeof staleTime === 'function' ? staleTime(query) : staleTime\n}\n\nexport function resolveEnabled<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n enabled: undefined | Enabled<TQueryFnData, TError, TData, TQueryKey>,\n query: Query<TQueryFnData, TError, TData, TQueryKey>,\n): boolean | undefined {\n return typeof enabled === 'function' ? enabled(query) : enabled\n}\n\nexport function matchQuery(\n filters: QueryFilters,\n query: Query<any, any, any, any>,\n): boolean {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale,\n } = filters\n\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive()\n if (type === 'active' && !isActive) {\n return false\n }\n if (type === 'inactive' && isActive) {\n return false\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false\n }\n\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false\n }\n\n if (predicate && !predicate(query)) {\n return false\n }\n\n return true\n}\n\nexport function matchMutation(\n filters: MutationFilters,\n mutation: Mutation<any, any>,\n): boolean {\n const { exact, status, predicate, mutationKey } = filters\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false\n }\n }\n\n if (status && mutation.state.status !== status) {\n return false\n }\n\n if (predicate && !predicate(mutation)) {\n return false\n }\n\n return true\n}\n\nexport function hashQueryKeyByOptions<TQueryKey extends QueryKey = QueryKey>(\n queryKey: TQueryKey,\n options?: Pick<QueryOptions<any, any, any, any>, 'queryKeyHashFn'>,\n): string {\n const hashFn = options?.queryKeyHashFn || hashKey\n return hashFn(queryKey)\n}\n\n/**\n * Default query & mutation keys hash function.\n * Hashes the value into a stable hash.\n */\nexport function hashKey(queryKey: QueryKey | MutationKey): string {\n return JSON.stringify(queryKey, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any)\n : val,\n )\n}\n\n/**\n * Checks if key `b` partially matches with key `a`.\n */\nexport function partialMatchKey(a: QueryKey, b: QueryKey): boolean\nexport function partialMatchKey(a: any, b: any): boolean {\n if (a === b) {\n return true\n }\n\n if (typeof a !== typeof b) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return Object.keys(b).every((key) => partialMatchKey(a[key], b[key]))\n }\n\n return false\n}\n\nconst hasOwn = Object.prototype.hasOwnProperty\n\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\nexport function replaceEqualDeep<T>(a: unknown, b: T, depth?: number): T\nexport function replaceEqualDeep(a: any, b: any, depth = 0): any {\n if (a === b) {\n return a\n }\n\n if (depth > 500) return b\n\n const array = isPlainArray(a) && isPlainArray(b)\n\n if (!array && !(isPlainObject(a) && isPlainObject(b))) return b\n\n const aItems = array ? a : Object.keys(a)\n const aSize = aItems.length\n const bItems = array ? b : Object.keys(b)\n const bSize = bItems.length\n const copy: any = array ? new Array(bSize) : {}\n\n let equalItems = 0\n\n for (let i = 0; i < bSize; i++) {\n const key: any = array ? i : bItems[i]\n const aItem = a[key]\n const bItem = b[key]\n\n if (aItem === bItem) {\n copy[key] = aItem\n if (array ? i < aSize : hasOwn.call(a, key)) equalItems++\n continue\n }\n\n if (\n aItem === null ||\n bItem === null ||\n typeof aItem !== 'object' ||\n typeof bItem !== 'object'\n ) {\n copy[key] = bItem\n continue\n }\n\n const v = replaceEqualDeep(aItem, bItem, depth + 1)\n copy[key] = v\n if (v === aItem) equalItems++\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy\n}\n\n/**\n * Shallow compare objects.\n */\nexport function shallowEqualObjects<T extends Record<string, any>>(\n a: T,\n b: T | undefined,\n): boolean {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isPlainArray(value: unknown): value is Array<unknown> {\n return Array.isArray(value) && value.length === Object.keys(value).length\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\nexport function isPlainObject(o: any): o is Record<PropertyKey, unknown> {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has no constructor\n const ctor = o.constructor\n if (ctor === undefined) {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Handles Objects created by Object.create(<arbitrary prototype>)\n if (Object.getPrototypeOf(o) !== Object.prototype) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function sleep(timeout: number): Promise<void> {\n return new Promise((resolve) => {\n timeoutManager.setTimeout(resolve, timeout)\n })\n}\n\nexport function replaceData<\n TData,\n TOptions extends QueryOptions<any, any, any, any>,\n>(prevData: TData | undefined, data: TData, options: TOptions): TData {\n if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data) as TData\n } else if (options.structuralSharing !== false) {\n if (process.env.NODE_ENV !== 'production') {\n try {\n return replaceEqualDeep(prevData, data)\n } catch (error) {\n console.error(\n `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`,\n )\n\n // Prevent the replaceEqualDeep from being called again down below.\n throw error\n }\n }\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data)\n }\n return data\n}\n\nexport function keepPreviousData<T>(\n previousData: T | undefined,\n): T | undefined {\n return previousData\n}\n\nexport function addToEnd<T>(items: Array<T>, item: T, max = 0): Array<T> {\n const newItems = [...items, item]\n return max && newItems.length > max ? newItems.slice(1) : newItems\n}\n\nexport function addToStart<T>(items: Array<T>, item: T, max = 0): Array<T> {\n const newItems = [item, ...items]\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems\n}\n\nexport const skipToken = Symbol()\nexport type SkipToken = typeof skipToken\n\nexport function ensureQueryFn<\n TQueryFnData = unknown,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: {\n queryFn?: QueryFunction<TQueryFnData, TQueryKey> | SkipToken\n queryHash?: string\n },\n fetchOptions?: FetchOptions<TQueryFnData>,\n): QueryFunction<TQueryFnData, TQueryKey> {\n if (process.env.NODE_ENV !== 'production') {\n if (options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`,\n )\n }\n }\n\n // if we attempt to retry a fetch that was triggered from an initialPromise\n // when we don't have a queryFn yet, we can't retry, so we just return the already rejected initialPromise\n // if an observer has already mounted, we will be able to retry with that queryFn\n if (!options.queryFn && fetchOptions?.initialPromise) {\n return () => fetchOptions.initialPromise!\n }\n\n if (!options.queryFn || options.queryFn === skipToken) {\n return () =>\n Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`))\n }\n\n return options.queryFn\n}\n\nexport function shouldThrowError<T extends (...args: Array<any>) => boolean>(\n throwOnError: boolean | T | undefined,\n params: Parameters<T>,\n): boolean {\n // Allow throwOnError function to override throwing behavior on a per-error basis\n if (typeof throwOnError === 'function') {\n return throwOnError(...params)\n }\n\n return !!throwOnError\n}\n\nexport function addConsumeAwareSignal<T>(\n object: T,\n getSignal: () => AbortSignal,\n onCancelled: VoidFunction,\n): T & { signal: AbortSignal } {\n let consumed = false\n let signal: AbortSignal | undefined\n\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n signal ??= getSignal()\n if (consumed) {\n return signal\n }\n\n consumed = true\n if (signal.aborted) {\n onCancelled()\n } else {\n signal.addEventListener('abort', onCancelled, { once: true })\n }\n\n return signal\n },\n })\n\n return object as T & { signal: AbortSignal }\n}\n","/**\n * Thenable types which matches React's types for promises\n *\n * React seemingly uses `.status`, `.value` and `.reason` properties on a promises to optimistically unwrap data from promises\n *\n * @see https://github.com/facebook/react/blob/main/packages/shared/ReactTypes.js#L112-L138\n * @see https://github.com/facebook/react/blob/4f604941569d2e8947ce1460a0b2997e835f37b9/packages/react-debug-tools/src/ReactDebugHooks.js#L224-L227\n */\n\nimport { noop } from './utils'\n\ninterface Fulfilled<T> {\n status: 'fulfilled'\n value: T\n}\ninterface Rejected {\n status: 'rejected'\n reason: unknown\n}\ninterface Pending<T> {\n status: 'pending'\n\n /**\n * Resolve the promise with a value.\n * Will remove the `resolve` and `reject` properties from the promise.\n */\n resolve: (value: T) => void\n /**\n * Reject the promise with a reason.\n * Will remove the `resolve` and `reject` properties from the promise.\n */\n reject: (reason: unknown) => void\n}\n\nexport type FulfilledThenable<T> = Promise<T> & Fulfilled<T>\nexport type RejectedThenable<T> = Promise<T> & Rejected\nexport type PendingThenable<T> = Promise<T> & Pending<T>\n\nexport type Thenable<T> =\n | FulfilledThenable<T>\n | RejectedThenable<T>\n | PendingThenable<T>\n\nexport function pendingThenable<T>(): PendingThenable<T> {\n let resolve: Pending<T>['resolve']\n let reject: Pending<T>['reject']\n // this could use `Promise.withResolvers()` in the future\n const thenable = new Promise((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n }) as PendingThenable<T>\n\n thenable.status = 'pending'\n thenable.catch(() => {\n // prevent unhandled rejection errors\n })\n\n function finalize(data: Fulfilled<T> | Rejected) {\n Object.assign(thenable, data)\n\n // clear pending props props to avoid calling them twice\n delete (thenable as Partial<PendingThenable<T>>).resolve\n delete (thenable as Partial<PendingThenable<T>>).reject\n }\n\n thenable.resolve = (value) => {\n finalize({\n status: 'fulfilled',\n value,\n })\n\n resolve(value)\n }\n thenable.reject = (reason) => {\n finalize({\n status: 'rejected',\n reason,\n })\n\n reject(reason)\n }\n\n return thenable\n}\n\n/**\n * This function takes a Promise-like input and detects whether the data\n * is synchronously available or not.\n *\n * It does not inspect .status, .value or .reason properties of the promise,\n * as those are not always available, and the .status of React's promises\n * should not be considered part of the public API.\n */\nexport function tryResolveSync(promise: Promise<unknown> | Thenable<unknown>) {\n let data: unknown\n\n promise\n .then((result) => {\n data = result\n return result\n }, noop)\n // .catch can be unavailable on certain kinds of thenable's\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n ?.catch(noop)\n\n if (data !== undefined) {\n return { data }\n }\n\n return undefined\n}\n","import { tryResolveSync } from './thenable'\nimport { noop } from './utils'\nimport type {\n DefaultError,\n MutationKey,\n MutationMeta,\n MutationOptions,\n MutationScope,\n QueryKey,\n QueryMeta,\n QueryOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\ntype TransformerFn = (data: any) => any\nfunction defaultTransformerFn(data: any): any {\n return data\n}\n\nexport interface DehydrateOptions {\n serializeData?: TransformerFn\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n shouldRedactErrors?: (error: unknown) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n deserializeData?: TransformerFn\n queries?: QueryOptions\n mutations?: MutationOptions<unknown, DefaultError, unknown, unknown>\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n meta?: MutationMeta\n scope?: MutationScope\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n promise?: Promise<unknown>\n meta?: QueryMeta\n // This is only optional because older versions of Query might have dehydrated\n // without it which we need to handle for backwards compatibility.\n // This should be changed to required in the future.\n dehydratedAt?: number\n}\n\nexport interface DehydratedState {\n mutations: Array<DehydratedMutation>\n queries: Array<DehydratedQuery>\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n ...(mutation.options.scope && { scope: mutation.options.scope }),\n ...(mutation.meta && { meta: mutation.meta }),\n }\n}\n\n// Most config is not dehydrated but instead meant to configure again when\n// consuming the de/rehydrated data, typically with useQuery on the client.\n// Sometimes it might make sense to prefetch data on the server and include\n// in the html-payload, but not consume it on the initial render.\nfunction dehydrateQuery(\n query: Query,\n serializeData: TransformerFn,\n shouldRedactErrors: (error: unknown) => boolean,\n): DehydratedQuery {\n const dehydratePromise = () => {\n const promise = query.promise?.then(serializeData).catch((error) => {\n if (!shouldRedactErrors(error)) {\n // Reject original error if it should not be redacted\n return Promise.reject(error)\n }\n // If not in production, log original error before rejecting redacted error\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n `A query that was dehydrated as pending ended up rejecting. [${query.queryHash}]: ${error}; The error will be redacted in production builds`,\n )\n }\n return Promise.reject(new Error('redacted'))\n })\n\n // Avoid unhandled promise rejections\n // We need the promise we dehydrate to reject to get the correct result into\n // the query cache, but we also want to avoid unhandled promise rejections\n // in whatever environment the prefetches are happening in.\n promise?.catch(noop)\n\n return promise\n }\n\n return {\n dehydratedAt: Date.now(),\n state: {\n ...query.state,\n ...(query.state.data !== undefined && {\n data: serializeData(query.state.data),\n }),\n },\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n ...(query.state.status === 'pending' && {\n promise: dehydratePromise(),\n }),\n ...(query.meta && { meta: query.meta }),\n }\n}\n\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function defaultShouldDehydrateQuery(query: Query) {\n return query.state.status === 'success'\n}\n\nfunction defaultShouldRedactErrors(_: unknown) {\n return true\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ??\n client.getDefaultOptions().dehydrate?.shouldDehydrateMutation ??\n defaultShouldDehydrateMutation\n\n const mutations = client\n .getMutationCache()\n .getAll()\n .flatMap((mutation) =>\n filterMutation(mutation) ? [dehydrateMutation(mutation)] : [],\n )\n\n const filterQuery =\n options.shouldDehydrateQuery ??\n client.getDefaultOptions().dehydrate?.shouldDehydrateQuery ??\n defaultShouldDehydrateQuery\n\n const shouldRedactErrors =\n options.shouldRedactErrors ??\n client.getDefaultOptions().dehydrate?.shouldRedactErrors ??\n defaultShouldRedactErrors\n\n const serializeData =\n options.serializeData ??\n client.getDefaultOptions().dehydrate?.serializeData ??\n defaultTransformerFn\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) =>\n filterQuery(query)\n ? [dehydrateQuery(query, serializeData, shouldRedactErrors)]\n : [],\n )\n\n return { mutations, queries }\n}\n\nexport function hydrate(\n client: QueryClient,\n dehydratedState: unknown,\n options?: HydrateOptions,\n): void {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return\n }\n\n const mutationCache = client.getMutationCache()\n const queryCache = client.getQueryCache()\n const deserializeData =\n options?.defaultOptions?.deserializeData ??\n client.getDefaultOptions().hydrate?.deserializeData ??\n defaultTransformerFn\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const mutations = (dehydratedState as DehydratedState).mutations || []\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = (dehydratedState as DehydratedState).queries || []\n\n mutations.forEach(({ state, ...mutationOptions }) => {\n mutationCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.mutations,\n ...options?.defaultOptions?.mutations,\n ...mutationOptions,\n },\n state,\n )\n })\n\n queries.forEach(\n ({ queryKey, state, queryHash, meta, promise, dehydratedAt }) => {\n const syncData = promise ? tryResolveSync(promise) : undefined\n const rawData = state.data === undefined ? syncData?.data : state.data\n const data = rawData === undefined ? rawData : deserializeData(rawData)\n\n let query = queryCache.get(queryHash)\n const existingQueryIsPending = query?.state.status === 'pending'\n const existingQueryIsFetching = query?.state.fetchStatus === 'fetching'\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n const hasNewerSyncData =\n syncData &&\n // We only need this undefined check to handle older dehydration\n // payloads that might not have dehydratedAt\n dehydratedAt !== undefined &&\n dehydratedAt > query.state.dataUpdatedAt\n if (\n state.dataUpdatedAt > query.state.dataUpdatedAt ||\n hasNewerSyncData\n ) {\n // omit fetchStatus from dehydrated state\n // so that query stays in its current fetchStatus\n const { fetchStatus: _ignored, ...serializedState } = state\n query.setState({\n ...serializedState,\n data,\n })\n }\n } else {\n // Restore query\n query = queryCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.queries,\n ...options?.defaultOptions?.queries,\n queryKey,\n queryHash,\n meta,\n },\n // Reset fetch status to idle to avoid\n // query being stuck in fetching state upon hydration\n {\n ...state,\n data,\n fetchStatus: 'idle',\n status: data !== undefined ? 'success' : state.status,\n },\n )\n }\n\n if (\n promise &&\n !existingQueryIsPending &&\n !existingQueryIsFetching &&\n // Only hydrate if dehydration is newer than any existing data,\n // this is always true for new queries\n (dehydratedAt === undefined || dehydratedAt > query.state.dataUpdatedAt)\n ) {\n // This doesn't actually fetch - it just creates a retryer\n // which will re-use the passed `initialPromise`\n // Note that we need to call these even when data was synchronously\n // available, as we still need to set up the retryer\n query\n .fetch(undefined, {\n // RSC transformed promises are not thenable\n initialPromise: Promise.resolve(promise).then(deserializeData),\n })\n // Avoid unhandled promise rejections\n .catch(noop)\n }\n },\n )\n}\n","import { dehydrate, hydrate } from '@tanstack/query-core'\nimport type {\n DehydrateOptions,\n DehydratedState,\n HydrateOptions,\n NotifyEventType,\n QueryClient,\n} from '@tanstack/query-core'\n\nexport type Promisable<T> = T | PromiseLike<T>\n\nexport interface Persister {\n persistClient: (persistClient: PersistedClient) => Promisable<void>\n restoreClient: () => Promisable<PersistedClient | undefined>\n removeClient: () => Promisable<void>\n}\n\nexport interface PersistedClient {\n timestamp: number\n buster: string\n clientState: DehydratedState\n}\n\nexport interface PersistQueryClientRootOptions {\n /** The QueryClient to persist */\n queryClient: QueryClient\n /** The Persister interface for storing and restoring the cache\n * to/from a persisted location */\n persister: Persister\n /** A unique string that can be used to forcefully\n * invalidate existing caches if they do not share the same buster string */\n buster?: string\n}\n\nexport interface PersistedQueryClientRestoreOptions extends PersistQueryClientRootOptions {\n /** The max-allowed age of the cache in milliseconds.\n * If a persisted cache is found that is older than this\n * time, it will be discarded */\n maxAge?: number\n /** The options passed to the hydrate function */\n hydrateOptions?: HydrateOptions\n}\n\nexport interface PersistedQueryClientSaveOptions extends PersistQueryClientRootOptions {\n /** The options passed to the dehydrate function */\n dehydrateOptions?: DehydrateOptions\n}\n\nexport interface PersistQueryClientOptions\n extends\n PersistedQueryClientRestoreOptions,\n PersistedQueryClientSaveOptions,\n PersistQueryClientRootOptions {}\n\n/**\n * Checks if emitted event is about cache change and not about observers.\n * Useful for persist, where we only want to trigger save when cache is changed.\n */\nconst cacheEventTypes: Array<NotifyEventType> = ['added', 'removed', 'updated']\n\nfunction isCacheEventType(eventType: NotifyEventType) {\n return cacheEventTypes.includes(eventType)\n}\n\n/**\n * Restores persisted data to the QueryCache\n * - data obtained from persister.restoreClient\n * - data is hydrated using hydrateOptions\n * If data is expired, busted, empty, or throws, it runs persister.removeClient\n */\nexport async function persistQueryClientRestore({\n queryClient,\n persister,\n maxAge = 1000 * 60 * 60 * 24,\n buster = '',\n hydrateOptions,\n}: PersistedQueryClientRestoreOptions) {\n try {\n const persistedClient = await persister.restoreClient()\n\n if (persistedClient) {\n if (persistedClient.timestamp) {\n const expired = Date.now() - persistedClient.timestamp > maxAge\n const busted = persistedClient.buster !== buster\n if (expired || busted) {\n return persister.removeClient()\n } else {\n hydrate(queryClient, persistedClient.clientState, hydrateOptions)\n }\n } else {\n return persister.removeClient()\n }\n }\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(err)\n console.warn(\n 'Encountered an error attempting to restore client cache from persisted location. As a precaution, the persisted cache will be discarded.',\n )\n }\n\n await persister.removeClient()\n\n throw err\n }\n}\n\n/**\n * Persists data from the QueryCache\n * - data dehydrated using dehydrateOptions\n * - data is persisted using persister.persistClient\n */\nexport async function persistQueryClientSave({\n queryClient,\n persister,\n buster = '',\n dehydrateOptions,\n}: PersistedQueryClientSaveOptions) {\n const persistClient: PersistedClient = {\n buster,\n timestamp: Date.now(),\n clientState: dehydrate(queryClient, dehydrateOptions),\n }\n\n await persister.persistClient(persistClient)\n}\n\n/**\n * Subscribe to QueryCache and MutationCache updates (for persisting)\n * @returns an unsubscribe function (to discontinue monitoring)\n */\nexport function persistQueryClientSubscribe(\n props: PersistedQueryClientSaveOptions,\n) {\n const unsubscribeQueryCache = props.queryClient\n .getQueryCache()\n .subscribe((event) => {\n if (isCacheEventType(event.type)) {\n persistQueryClientSave(props)\n }\n })\n\n const unsubscribeMutationCache = props.queryClient\n .getMutationCache()\n .subscribe((event) => {\n if (isCacheEventType(event.type)) {\n persistQueryClientSave(props)\n }\n })\n\n return () => {\n unsubscribeQueryCache()\n unsubscribeMutationCache()\n }\n}\n\n/**\n * Restores persisted data to QueryCache and persists further changes.\n */\nexport function persistQueryClient(\n props: PersistQueryClientOptions,\n): [() => void, Promise<void>] {\n let hasUnsubscribed = false\n let persistQueryClientUnsubscribe: (() => void) | undefined\n const unsubscribe = () => {\n hasUnsubscribed = true\n persistQueryClientUnsubscribe?.()\n }\n\n // Attempt restore\n const restorePromise = persistQueryClientRestore(props).then(() => {\n if (!hasUnsubscribed) {\n // Subscribe to changes in the query cache to trigger the save\n persistQueryClientUnsubscribe = persistQueryClientSubscribe(props)\n }\n })\n\n return [unsubscribe, restorePromise]\n}\n","import type { QueryClient } from '@tanstack/react-query'\nimport type { TadaDocumentNode } from 'gql.tada'\n\nimport { conflictAwareUpdate } from './conflictAwareUpdate'\nimport { accountUpdateEmail } from '../../account/useUpdateEmail'\nimport { accountUpdateName } from '../../account/useUpdateName'\nimport { updatePassword } from '../../account/useUpdatePassword'\nimport { accountUpdatePhone } from '../../account/useUpdatePhone'\nimport { accountUpdatePrefs } from '../../account/useUpdatePrefs'\nimport type { AppwriteClient } from '../../client'\nimport { createDocument } from '../../databases/useCreateDocument'\nimport { decrementDocumentAttribute } from '../../databases/useDecrementAttribute'\nimport { deleteDocument } from '../../databases/useDeleteDocument'\nimport { incrementDocumentAttribute } from '../../databases/useIncrementAttribute'\nimport { upsertDocument } from '../../databases/useUpsertDocument'\nimport { createSubscriber } from '../../messaging/useCreateSubscriber'\nimport { deleteSubscriber } from '../../messaging/useDeleteSubscriber'\nimport { Keys } from '../../query/Keys'\nimport { createMembership } from '../../teams/useCreateMembership'\nimport { createTeam } from '../../teams/useCreateTeam'\nimport { deleteMembership } from '../../teams/useDeleteMembership'\nimport { deleteTeam } from '../../teams/useDeleteTeam'\nimport { updateMembership } from '../../teams/useUpdateMembership'\nimport { updateTeamName } from '../../teams/useUpdateTeamName'\nimport { updateTeamPrefs } from '../../teams/useUpdateTeamPrefs'\nimport type { ConflictStrategy } from '../conflictResolution/types'\nimport type { MutationFn, Vars } from '../types'\n\n/**\n * Creates a mutationFn that executes a GraphQL mutation and returns the\n * first field from the response data.\n */\nfunction gqlMutation(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n query: TadaDocumentNode<any, any>,\n resultKey: string,\n options?: { serializeData?: boolean },\n): MutationFn {\n return async (client, variables) => {\n const vars = options?.serializeData\n ? { ...variables, data: JSON.stringify(variables.data) }\n : variables\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { data, errors } = await client.graphql.mutation({ query, variables: vars as any })\n if (errors) throw errors\n return (data as Vars)[resultKey]\n }\n}\n\ntype MutationEntry = {\n mutationKey: readonly string[]\n mutationFn: MutationFn\n}\n\nexport const mutationRegistry: MutationEntry[] = [\n {\n mutationKey: Keys.databases().collections().documents().create(),\n mutationFn: gqlMutation(createDocument, 'databasesCreateDocument', { serializeData: true }),\n },\n // The update document entry is registered separately by hydrateMutationDefaults\n // so it can be configured with the user's conflict resolution strategy.\n {\n mutationKey: Keys.databases().collections().documents().delete(),\n mutationFn: gqlMutation(deleteDocument, 'databasesDeleteDocument'),\n },\n {\n mutationKey: Keys.databases().collections().documents().upsert(),\n mutationFn: gqlMutation(upsertDocument, 'databasesUpsertDocument', { serializeData: true }),\n },\n {\n mutationKey: [...Keys.databases().transactions().operations().key(), 'incrementAttribute'],\n mutationFn: gqlMutation(incrementDocumentAttribute, 'databasesIncrementDocumentAttribute'),\n },\n\n {\n mutationKey: [...Keys.databases().transactions().operations().key(), 'decrementAttribute'],\n mutationFn: gqlMutation(decrementDocumentAttribute, 'databasesDecrementDocumentAttribute'),\n },\n\n {\n mutationKey: Keys.account().prefs().update(),\n mutationFn: gqlMutation(accountUpdatePrefs, 'accountUpdatePrefs'),\n },\n {\n mutationKey: Keys.account().name().update(),\n mutationFn: gqlMutation(accountUpdateName, 'accountUpdateName'),\n },\n {\n mutationKey: Keys.account().email().update(),\n mutationFn: gqlMutation(accountUpdateEmail, 'accountUpdateEmail'),\n },\n {\n mutationKey: Keys.account().password().update(),\n mutationFn: gqlMutation(updatePassword, 'accountUpdatePassword'),\n },\n {\n mutationKey: Keys.account().phone().update(),\n mutationFn: gqlMutation(accountUpdatePhone, 'accountUpdatePhone'),\n },\n\n { mutationKey: Keys.teams().create(), mutationFn: gqlMutation(createTeam, 'teamsCreate') },\n { mutationKey: Keys.teams().delete(), mutationFn: gqlMutation(deleteTeam, 'teamsDelete') },\n {\n mutationKey: Keys.teams().teamName().update(),\n mutationFn: gqlMutation(updateTeamName, 'teamsUpdateName'),\n },\n {\n mutationKey: Keys.teams().teamPrefs().update(),\n mutationFn: gqlMutation(updateTeamPrefs, 'teamsUpdatePrefs'),\n },\n {\n mutationKey: Keys.teams().memberships().create(),\n mutationFn: gqlMutation(createMembership, 'teamsCreateMembership'),\n },\n {\n mutationKey: Keys.teams().memberships().delete(),\n mutationFn: gqlMutation(deleteMembership, 'teamsDeleteMembership'),\n },\n {\n mutationKey: Keys.teams().memberships().update(),\n mutationFn: gqlMutation(updateMembership, 'teamsUpdateMembership'),\n },\n\n {\n mutationKey: Keys.messaging().subscriber().create(),\n mutationFn: gqlMutation(createSubscriber, 'messagingCreateSubscriber'),\n },\n {\n mutationKey: Keys.messaging().subscriber().delete(),\n mutationFn: gqlMutation(deleteSubscriber, 'messagingDeleteSubscriber'),\n },\n]\n\n/**\n * Registers all mutation defaults with the QueryClient so that\n * dehydrated/persisted mutations can be replayed on app restart.\n *\n * Call once during app initialization, before rehydrating the persisted\n * mutation cache.\n */\nexport function hydrateMutationDefaults(\n queryClient: QueryClient,\n client: AppwriteClient,\n options?: { conflictStrategy?: ConflictStrategy },\n) {\n for (const entry of mutationRegistry) {\n queryClient.setMutationDefaults(entry.mutationKey, {\n mutationFn: (variables: Vars) => entry.mutationFn(client, variables, queryClient),\n scope: { id: 'appwrite' },\n })\n }\n\n // Register the update document mutation with conflict resolution awareness\n const strategy = options?.conflictStrategy ?? 'last-write-wins'\n queryClient.setMutationDefaults(Keys.databases().collections().documents().update(), {\n mutationFn: (variables: Vars) => conflictAwareUpdate(strategy)(client, variables, queryClient),\n scope: { id: 'appwrite' },\n })\n}\n","import { createAsyncStoragePersister } from '@tanstack/query-async-storage-persister'\nimport type { AsyncStorage, Persister } from '@tanstack/query-persist-client-core'\nimport { persistQueryClient } from '@tanstack/query-persist-client-core'\nimport { onlineManager, QueryClient } from '@tanstack/react-query'\n\nimport type { ConflictStrategy } from './conflictResolution/types'\nimport { hydrateMutationDefaults } from './mutations/registry'\nimport type { NetworkAdapter } from './types'\nimport type { AppwriteClient } from '../client'\nimport { createAppwriteClient } from '../client'\n\nexport type OfflineClient = {\n appwrite: AppwriteClient\n queryClient: QueryClient\n persister: Persister | undefined\n\n /**\n * Start persistence for non-React (imperative) usage.\n * Restores the persisted cache, subscribes to future changes,\n * and replays any paused mutations once the cache is restored.\n *\n * @returns `unsubscribe` to stop persisting and `restored` which resolves\n * when the cache has been rehydrated from storage.\n * @throws If no persister was configured via `storage` or `persister`.\n */\n startPersistence: () => { unsubscribe: () => void; restored: Promise<void> }\n\n conflictStrategy?: ConflictStrategy\n}\n\nconst dehydrateOptions = {\n shouldDehydrateMutation: (mutation: { state: { isPaused: boolean } }) => mutation.state.isPaused,\n shouldDehydrateQuery: (query: { state: { status: string } }) => query.state.status === 'success',\n}\n\n/**\n * Creates an offline-capable Appwrite client with a pre-configured QueryClient.\n *\n * Persistence can be configured in three ways:\n * - **Batteries-included**: pass `storage` (an `AsyncStorage` interface) and\n * the factory builds a TanStack persister automatically.\n * - **Bring your own**: pass a pre-built `persister` (TanStack `Persister`\n * interface) — e.g. one backed by TinyBase, SQLite, etc.\n * - **No persistence**: omit both — you still get offline mutation queuing\n * and network state management.\n *\n * For React apps, pass `client.persister` to `<AppwriteProvider persister={…}>`.\n * For non-React (imperative) usage, call `client.startPersistence()`.\n */\nexport function createOfflineClient({\n endpoint,\n projectId,\n storage,\n persister: externalPersister,\n networkAdapter,\n throttleTime = 1000,\n conflictStrategy = 'last-write-wins',\n}: {\n endpoint: string\n projectId: string\n /** Batteries-included: provide a simple getItem/setItem/removeItem storage. */\n storage?: AsyncStorage\n /** BYOP: provide a pre-built TanStack Persister. */\n persister?: Persister\n networkAdapter: NetworkAdapter\n /** Throttle time for network status changes to prevent rapid toggling. Default: 1000ms. */\n throttleTime?: number\n conflictStrategy?: ConflictStrategy\n}): OfflineClient {\n if (storage && externalPersister) {\n throw new Error('Provide either `storage` or `persister`, not both.')\n }\n\n const appwrite = createAppwriteClient({ endpoint, projectId })\n\n const queryClient = new QueryClient({\n defaultOptions: {\n mutations: {\n networkMode: 'offlineFirst',\n meta: {\n conflictStrategy,\n },\n },\n queries: { networkMode: 'offlineFirst', gcTime: 1000 * 60 * 60 * 24 },\n },\n })\n\n hydrateMutationDefaults(queryClient, appwrite, { conflictStrategy })\n\n const persister =\n externalPersister ??\n (storage\n ? createAsyncStoragePersister({\n storage,\n key: 'appwrite-graphql-offline-cache',\n throttleTime,\n })\n : undefined)\n\n networkAdapter.listen((isOnline) => {\n onlineManager.setOnline(isOnline)\n })\n\n return {\n appwrite,\n queryClient,\n persister,\n startPersistence() {\n if (!persister) {\n throw new Error(\n 'No persister configured. Provide `storage` or `persister` to createOfflineClient.',\n )\n }\n\n const [unsubscribe, restored] = persistQueryClient({\n queryClient,\n persister,\n dehydrateOptions,\n })\n\n const restoredWithResume = restored.then(() => {\n void queryClient.resumePausedMutations()\n })\n\n return { unsubscribe, restored: restoredWithResume }\n },\n }\n}\n","import type { NetworkAdapter } from '../types'\n\nexport function webNetworkAdapter(): NetworkAdapter {\n return {\n listen: (callback) => {\n const updateOnlineStatus = () => {\n callback(navigator.onLine)\n }\n\n window.addEventListener('online', updateOnlineStatus)\n window.addEventListener('offline', updateOnlineStatus)\n\n // Initial status\n callback(navigator.onLine)\n\n return () => {\n window.removeEventListener('online', updateOnlineStatus)\n window.removeEventListener('offline', updateOnlineStatus)\n }\n },\n }\n}\n","import { useState } from 'react'\nimport type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQuery } from '../useQuery'\nimport { useSuspenseQuery } from '../useSuspenseQuery'\n\ntype Props = {\n functionId: string\n body?: Record<string, string | number | boolean | null>\n async?: boolean\n path?: string\n method?: string\n headers?: Record<string, string | number | boolean | null>\n scheduledAt?: string\n}\n\nconst createExecution = gql(/* GraphQL */ `\n mutation CreateExecution(\n $functionId: String!\n $body: String\n $async: Boolean\n $path: String\n $method: String\n $headers: String\n $scheduledAt: String\n ) {\n functionsCreateExecution(\n functionId: $functionId\n body: $body\n async: $async\n path: $path\n method: $method\n headers: $headers\n scheduledAt: $scheduledAt\n ) {\n _id\n status\n responseStatusCode\n responseBody\n errors\n duration\n }\n }\n`)\n\nconst getFunctionExecution = gql(/* GraphQL */ `\n query GetFunctionExecution($functionId: String!, $executionId: String!) {\n functionsGetExecution(functionId: $functionId, executionId: $executionId) {\n status\n errors\n duration\n responseBody\n requestPath\n }\n }\n`)\n\ntype GetExecutionResult = ResultOf<typeof getFunctionExecution>['functionsGetExecution']\n\ntype ResponseBody = string | null | undefined | Record<string, string | number | boolean | null>\n\nfunction useCurrentExecution({\n currentExecution,\n currentFunction,\n}: {\n currentExecution: string | null\n currentFunction: string | null\n}) {\n const { graphql } = useAppwrite()\n const enabled = !!currentFunction && !!currentExecution\n\n const query = useQuery<GetExecutionResult | null, AppwriteException[], GetExecutionResult | null>(\n {\n queryKey: enabled\n ? Keys.function(currentFunction).execution(currentExecution).key()\n : Keys.functions().key(),\n queryFn: async () => {\n if (!currentExecution || !currentFunction) {\n return null\n }\n const { data } = await graphql.query({\n query: getFunctionExecution,\n variables: {\n functionId: currentFunction,\n executionId: currentExecution,\n },\n })\n\n if (!data?.functionsGetExecution) {\n throw new Error('Execution not found')\n }\n\n return data.functionsGetExecution ?? null\n },\n enabled,\n },\n )\n\n return { ...query }\n}\n\nexport function useFunction() {\n const { graphql } = useAppwrite()\n const [currentExecution, setCurrentExecution] = useState<string | null>(null)\n const [currentFunction, setCurrentFunction] = useState<string | null>(null)\n const getExecution = useCurrentExecution({ currentExecution, currentFunction })\n\n const executeFunction = useMutation<ResponseBody, AppwriteException[], Props>({\n mutationKey: Keys.functions().executions().create(),\n mutationFn: async ({\n functionId,\n body = {},\n async = false,\n path = '/',\n method = 'POST',\n headers = {},\n scheduledAt,\n }) => {\n setCurrentFunction(functionId)\n\n const { data } = await graphql.mutation({\n query: createExecution,\n variables: {\n functionId,\n body: JSON.stringify(body),\n async,\n path,\n method,\n headers: JSON.stringify(headers),\n scheduledAt,\n },\n })\n\n const { _id, status, errors, responseBody } = data.functionsCreateExecution ?? {}\n\n if (status === 'failed') {\n throw new Error(errors)\n }\n\n setCurrentExecution(_id ?? null)\n\n if (typeof responseBody === 'string') {\n if (responseBody.trim().startsWith('{') && responseBody.trim().endsWith('}')) {\n try {\n return JSON.parse(responseBody)\n } catch (error) {\n console.error('Failed to parse response body:', error)\n return responseBody\n }\n }\n return responseBody\n }\n },\n })\n\n return {\n executeFunction,\n currentExecution: getExecution,\n }\n}\n\nexport function useSuspenseFunction({\n functionId,\n body = {},\n async = false,\n path = '/',\n method = 'POST',\n headers = {},\n scheduledAt,\n}: Props) {\n const { graphql } = useAppwrite()\n\n const executeFunction = useSuspenseQuery<ResponseBody, AppwriteException[], ResponseBody>({\n queryKey: [...Keys.function(functionId).key(), 'execute', { path, method, body }],\n queryFn: async () => {\n const { data } = await graphql.mutation({\n query: createExecution,\n variables: {\n functionId,\n body: JSON.stringify(body),\n async,\n path,\n method,\n headers: JSON.stringify(headers),\n scheduledAt,\n },\n })\n\n if (data?.functionsCreateExecution?.status === 'failed') {\n throw new Error(data.functionsCreateExecution.errors)\n }\n\n const { responseBody } = data.functionsCreateExecution ?? {}\n\n if (typeof responseBody === 'string') {\n if (responseBody.trim().startsWith('{') && responseBody.trim().endsWith('}')) {\n try {\n return JSON.parse(responseBody)\n } catch (error) {\n console.error('Failed to parse response body:', error)\n return responseBody\n }\n }\n }\n return responseBody\n },\n staleTime: Infinity,\n })\n\n return {\n executeFunction,\n }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getExecution = gql(/* GraphQL */ `\n query GetExecution($functionId: String!, $executionId: String!) {\n functionsGetExecution(functionId: $functionId, executionId: $executionId) {\n _id\n _createdAt\n _updatedAt\n functionId\n trigger\n status\n requestMethod\n requestPath\n responseStatusCode\n responseBody\n errors\n duration\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof getExecution>\ntype Result = ResultOf<typeof getExecution>['functionsGetExecution']\n\nexport function useGetExecution({ functionId, executionId }: Variables, opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.function(functionId).execution(executionId).key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getExecution,\n variables: { functionId, executionId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.functionsGetExecution\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listExecutions = gql(/* GraphQL */ `\n query ListExecutions($functionId: String!, $queries: [String!]) {\n functionsListExecutions(functionId: $functionId, queries: $queries) {\n total\n executions {\n _id\n _createdAt\n _updatedAt\n functionId\n trigger\n status\n requestMethod\n requestPath\n responseStatusCode\n responseBody\n errors\n duration\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listExecutions>['functionsListExecutions']\n\nexport function useListExecutions(\n {\n functionId,\n queries,\n }: {\n functionId: string\n queries?: string[]\n },\n opts: QueryOptions = {},\n) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: [...Keys.function(functionId).executions().key(), ...(queries ?? [])],\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listExecutions,\n variables: {\n functionId,\n queries,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.functionsListExecutions\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/AppwriteProvider.tsx","../src/useAppwrite.ts","../src/useQueryClient.ts","../src/useMutation.ts","../src/useQuery.ts","../src/useLazyQuery.ts","../src/useSuspenseQuery.ts","../src/client.ts","../src/query/Keys.ts","../src/account/queryOptions.ts","../src/account/useAccount.ts","../src/account/useCreateAnonymousSession.ts","../src/account/useCreateEmailToken.ts","../src/account/useCreateJWT.ts","../src/account/useCreateMagicURLToken.ts","../src/account/useCreateMfaAuthenticator.ts","../src/account/useCreateMfaChallenge.ts","../src/account/useCreateMfaRecoveryCodes.ts","../src/account/useCreateOAuth2Token.ts","../src/account/useCreatePhoneToken.ts","../src/account/useCreatePhoneVerification.ts","../src/account/useCreatePushTarget.ts","../src/account/useCreateSession.ts","../src/account/useCreateEmailVerification.ts","../src/account/useDeleteIdentity.ts","../src/account/useDeleteMfaAuthenticator.ts","../src/account/useDeletePushTarget.ts","../src/account/useDeleteSession.ts","../src/account/useDeleteSessions.ts","../src/account/useGetMfaRecoveryCodes.ts","../src/account/useGetPrefs.ts","../src/account/useGetSession.ts","../src/account/useListIdentities.ts","../src/account/useListMfaFactors.ts","../src/account/useListSessions.ts","../src/account/useLogin.ts","../src/account/useLogout.ts","../src/account/useLogs.ts","../src/account/usePasswordRecovery.ts","../src/account/useResetPassword.ts","../src/account/useSignUp.ts","../src/account/useUpdateEmail.ts","../src/account/useUpdateEmailVerification.ts","../src/account/useUpdateMagicURLSession.ts","../src/account/useUpdateMfa.ts","../src/account/useUpdateMfaAuthenticator.ts","../src/account/useUpdateMfaChallenge.ts","../src/account/useUpdateMfaRecoveryCodes.ts","../src/account/useUpdateName.ts","../src/account/useUpdatePassword.ts","../src/account/useUpdatePhone.ts","../src/account/useUpdatePhoneSession.ts","../src/account/useUpdatePhoneVerification.ts","../src/account/useUpdatePrefs.ts","../src/account/useUpdatePushTarget.ts","../src/account/useUpdateSession.ts","../src/account/useUpdateStatus.ts","../src/account/useVerification.ts","../src/avatars/useAvatarBrowser.ts","../src/avatars/useAvatarCreditCard.ts","../src/avatars/useAvatarFavicon.ts","../src/avatars/useAvatarFlag.ts","../src/avatars/useAvatarImage.ts","../src/avatars/useAvatarInitials.ts","../src/avatars/useAvatarQR.ts","../src/avatars/useAvatarScreenshot.ts","../src/databases/utils.ts","../src/databases/queryOptions.ts","../src/databases/useCollection.ts","../src/databases/useCollectionWithPagination.ts","../src/databases/useCreateDocument.ts","../src/databases/useCreateOperations.ts","../src/databases/useCreateTransaction.ts","../src/databases/useDecrementAttribute.ts","../src/databases/useDeleteDocument.ts","../src/databases/useDeleteTransaction.ts","../src/databases/useDocument.ts","../src/databases/useGetTransaction.ts","../src/databases/useIncrementAttribute.ts","../src/databases/useInfiniteCollection.ts","../src/databases/useListTransactions.ts","../src/offline/conflictResolution/resolve.ts","../src/offline/mutations/conflictAwareUpdate.ts","../src/databases/useUpdateDocument.ts","../src/databases/useUpdateTransaction.ts","../src/databases/useUpsertDocument.ts","../src/locale/useLocale.ts","../src/locale/useLocaleCodes.ts","../src/locale/useLocaleContinents.ts","../src/locale/useLocaleCountries.ts","../src/locale/useLocaleCountriesEU.ts","../src/locale/useLocaleCountriesPhones.ts","../src/locale/useLocaleCurrencies.ts","../src/locale/useLocaleLanguages.ts","../src/messaging/useCreateSubscriber.ts","../src/messaging/useDeleteSubscriber.ts","../src/storage/useFile.ts","../src/storage/useFileDownload.ts","../src/storage/useFilePreview.ts","../src/storage/useFileView.ts","../src/storage/useFiles.ts","../src/storage/useCreateFile.ts","../src/storage/useUpdateFile.ts","../src/storage/useDeleteFile.ts","../src/teams/queryOptions.ts","../src/teams/useTeam.ts","../src/teams/useTeams.ts","../src/teams/useTeamPrefs.ts","../src/teams/useTeamMembership.ts","../src/teams/useTeamMemberships.ts","../src/teams/useCreateTeam.ts","../src/teams/useUpdateTeamName.ts","../src/teams/useUpdateTeamPrefs.ts","../src/teams/useDeleteTeam.ts","../src/teams/useCreateMembership.ts","../src/teams/useUpdateMembership.ts","../src/teams/useUpdateMembershipStatus.ts","../src/teams/useDeleteMembership.ts","../src/query/QueryBuilder.ts","../node_modules/@tanstack/query-core/src/utils.ts","../node_modules/@tanstack/query-core/src/thenable.ts","../node_modules/@tanstack/query-core/src/hydration.ts","../node_modules/@tanstack/query-persist-client-core/src/persist.ts","../src/offline/mutations/registry.ts","../src/offline/createOfflineClient.ts","../src/offline/network/web.ts","../src/functions/useFunction.ts","../src/functions/useGetExecution.ts","../src/functions/useListExecutions.ts"],"names":["AppwriteContext","O","defaultQueryClient","QueryClient","AppwriteProvider","client","queryClient","persister","onCacheRestored","children","qc","PersistQueryClientProvider","mutation","query","ReactQueryDevtools","QueryClientProvider","useAppwrite","ctx","useContext","useQueryClient","QueryClientContext","useMutation","options","useReactMutation","useQuery","useReactQuery","useLazyQuery","useSuspenseQuery","useSuspenseReactQuery","graphqlObject","graphqlAppwrite","variables","data","errors","print","createAppwriteClient","endpoint","projectId","Client","Account","Avatars","Realtime","Storage","Graphql","Databases","Functions","Locale","Messaging","TablesDB","Teams","Keys","_Keys","segments","k","id","getAccount","gql","getAccountQuery","useLazyAccount","isActive","setIsActive","useState","queryResult","getAccountQueryOptions","useEffect","subscriptionPromise","subscribe","sub","useAccount","opts","realtime","Channel","response","event","account","produce","draft","castDraft","createAnonymousSession","useCreateAnonymousSession","graphql","createEmailToken","useCreateEmailToken","userId","email","phrase","accountCreateJWT","useCreateJWT","gcTime","useSuspenseCreateJWT","createMagicURLToken","useCreateMagicURLToken","url","accountCreateMfaAuthenticator","useCreateMfaAuthenticator","type","accountCreateMfaChallenge","useCreateMfaChallenge","factor","accountCreateMfaRecoveryCodes","useCreateMfaRecoveryCodes","useCreateOAuth2Token","provider","success","failure","scopes","createPhoneToken","useCreatePhoneToken","phone","createPhoneVerification","useCreatePhoneVerification","accountCreatePushTarget","useCreatePushTarget","targetId","identifier","providerId","createSession","useCreateSession","secret","createEmailVerification","useCreateEmailVerification","accountDeleteIdentity","useDeleteIdentity","identityId","deleteMFAAuthenticator","useDeleteMfaAuthenticator","accountDeletePushTarget","useDeletePushTarget","deleteSession","useDeleteSession","sessionId","deleteSessions","useDeleteSessions","getMFARecoveryCodes","useGetMfaRecoveryCodes","accountGetPrefs","useGetPrefs","getSession","useGetSession","accountListIdentities","useListIdentities","listMFAFactors","useListMfaFactors","accountListSessions","useListSessions","accountCreateEmailPasswordSession","useLogin","login","password","oAuthLogin","useLogout","accountListLogs","useLogs","queries","createRecovery","usePasswordRecovery","resetUrl","_","e","updateRecovery","useResetPassword","createAccount","verify","useSignUp","signUp","name","ID","verifyEmail","verifyUrl","accountUpdateEmail","useUpdateEmail","updateEmailVerification","useUpdateEmailVerification","updateMagicURLSession","useUpdateMagicURLSession","accountUpdateMFA","useUpdateMfa","mfa","updateMFAAuthenticator","useUpdateMfaAuthenticator","otp","accountUpdateMfaChallenge","useUpdateMfaChallenge","challengeId","accountUpdateMfaRecoveryCodes","useUpdateMfaRecoveryCodes","accountUpdateName","useUpdateName","mutationData","updatePassword","useUpdatePassword","oldPassword","accountUpdatePhone","useUpdatePhone","updatePhoneSession","useUpdatePhoneSession","updatePhoneVerification","useUpdatePhoneVerification","accountUpdatePrefs","useUpdatePrefs","prefs","accountUpdatePushTarget","useUpdatePushTarget","updateSession","useUpdateSession","accountUpdateStatus","useUpdateStatus","updateVerification","useVerification","useAvatarBrowser","code","width","height","quality","avatars","useMemo","useAvatarCreditCard","useAvatarFavicon","useAvatarFlag","useAvatarImage","useAvatarInitials","background","useAvatarQR","text","size","margin","download","useAvatarScreenshot","mergeFieldsQuery","fields","Query","getDocument","getDocumentQuery","databaseId","collectionId","documentId","transactionId","rawQueries","mergedQueries","listDocuments","getCollectionQuery","documents","document","useCollectionQueryConfig","useCollectionRealtime","queriesKey","operation","useCollection","config","collection","useSuspenseCollection","usePaginationState","limit","page","setPage","totalRef","useRef","offset","prevPage","currentOffset","newPage","maxPage","useCollectionWithPagination","nextPage","previousPage","handlePageChange","total","useSuspenseCollectionWithPagination","createDocument","useCreateDocument","permissions","result","documentKeyPrefix","createOperations","useCreateOperations","operations","createTransaction","useCreateTransaction","ttl","decrementDocumentAttribute","useDecrementAttribute","attribute","value","min","previousEntries","old","current","decrement","newValue","__","context","key","deleteDocument","useDeleteDocument","deleteTransaction","useDeleteTransaction","useDocumentQueryConfig","useDocumentRealtime","useDocument","useSuspenseDocument","getTransaction","useGetTransaction","incrementDocumentAttribute","useIncrementAttribute","max","increment","useInfiniteCollection","accumulated","setAccumulated","paginatedQueries","prev","expectedLength","hasNextPage","fetchNextPage","useCallback","reset","listTransactions","useListTransactions","resolveConflict","strategy","extractChangedFields","localChanges","remoteChanges","original","updated","changes","conflictAwareUpdate","conflictStrategy","baseSnapshot","m","resolvedData","remoteResult","fetchErrors","rawRemote","remote","local","updateDocument","newData","thing","useUpdateDocument","appwrite","wasOffline","error","baseSnapshotCopy","willPerformOfflineMutation","onlineManager","updateTransaction","useUpdateTransaction","commit","rollback","upsertDocument","useUpsertDocument","getLocale","useLocale","listLocaleCodes","useLocaleCodes","listContinents","useLocaleContinents","listCountries","useLocaleCountries","listCountriesEU","useLocaleCountriesEU","listCountriesPhones","useLocaleCountriesPhones","listCurrencies","useLocaleCurrencies","listLanguages","useLocaleLanguages","createSubscriber","useCreateSubscriber","subscriberId","topicId","deleteSubscriber","useDeleteSubscriber","getFile","useFile","bucketId","fileId","useFileDownload","token","storage","useFilePreview","gravity","borderWidth","borderColor","borderRadius","opacity","rotation","output","useFileView","listFiles","useFiles","search","useCreateFile","file","onProgress","updateFile","useUpdateFile","deleteFile","useDeleteFile","getTeam","teamQueryOptions","teamId","useTeam","listTeams","useTeams","getTeamPrefs","useTeamPrefs","getMembership","useTeamMembership","membershipId","listMemberships","useTeamMemberships","createTeam","useCreateTeam","roles","updateTeamName","useUpdateTeamName","updateTeamPrefs","useUpdateTeamPrefs","deleteTeam","useDeleteTeam","createMembership","useCreateMembership","updateMembership","useUpdateMembership","updateMembershipStatus","useUpdateMembershipStatus","deleteMembership","useDeleteMembership","QueryBuilder","_QueryBuilder","field","pattern","start","end","prefix","suffix","term","count","values","date","orQueries","fn","andQueries","latitude","longitude","distance","meters","points","q","noop","tryResolveSync","promise","defaultTransformerFn","dehydrateMutation","dehydrateQuery","serializeData","shouldRedactErrors","dehydratePromise","defaultShouldDehydrateMutation","defaultShouldDehydrateQuery","defaultShouldRedactErrors","dehydrate","filterMutation","mutations","filterQuery","hydrate","dehydratedState","mutationCache","queryCache","deserializeData","state","mutationOptions","queryKey","queryHash","meta","dehydratedAt","syncData","rawData","existingQueryIsPending","existingQueryIsFetching","hasNewerSyncData","_ignored","serializedState","cacheEventTypes","isCacheEventType","eventType","persistQueryClientRestore","maxAge","buster","hydrateOptions","persistedClient","expired","busted","err","persistQueryClientSave","dehydrateOptions","persistClient","persistQueryClientSubscribe","props","unsubscribeQueryCache","unsubscribeMutationCache","persistQueryClient","hasUnsubscribed","persistQueryClientUnsubscribe","unsubscribe","restorePromise","gqlMutation","resultKey","vars","mutationRegistry","hydrateMutationDefaults","entry","createOfflineClient","externalPersister","networkAdapter","throttleTime","createAsyncStoragePersister","isOnline","restored","restoredWithResume","webNetworkAdapter","callback","updateOnlineStatus","createExecution","getFunctionExecution","useCurrentExecution","currentExecution","currentFunction","enabled","useFunction","setCurrentExecution","setCurrentFunction","getExecution","functionId","body","async","path","method","headers","scheduledAt","_id","status","responseBody","useSuspenseFunction","useGetExecution","executionId","listExecutions","useListExecutions"],"mappings":"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","file":"index.cjs","sourcesContent":["import * as React from 'react'\nimport { type ReactNode } from 'react'\nimport type { Persister } from '@tanstack/query-persist-client-core'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools'\nimport { PersistQueryClientProvider } from '@tanstack/react-query-persist-client'\n\nimport type { AppwriteClient } from './client'\n\nexport const AppwriteContext = React.createContext<AppwriteClient | null>(null)\n\nconst defaultQueryClient = new QueryClient()\n\nexport function AppwriteProvider({\n client,\n queryClient,\n persister,\n onCacheRestored,\n children,\n}: {\n client: AppwriteClient\n queryClient?: QueryClient\n persister?: Persister\n onCacheRestored?: () => void\n children: ReactNode\n}) {\n const qc = queryClient ?? defaultQueryClient\n\n if (persister) {\n return (\n <PersistQueryClientProvider\n client={qc}\n persistOptions={{\n persister,\n dehydrateOptions: {\n shouldDehydrateMutation: (mutation) => mutation.state.isPaused,\n shouldDehydrateQuery: (query) => query.state.status === 'success',\n },\n }}\n onSuccess={() => {\n void qc.resumePausedMutations()\n onCacheRestored?.()\n }}\n >\n <AppwriteContext.Provider value={client}>{children}</AppwriteContext.Provider>\n <ReactQueryDevtools initialIsOpen={false} />\n </PersistQueryClientProvider>\n )\n }\n\n return (\n <QueryClientProvider client={qc}>\n <AppwriteContext.Provider value={client}>{children}</AppwriteContext.Provider>\n <ReactQueryDevtools initialIsOpen={false} />\n </QueryClientProvider>\n )\n}\n","import { useContext } from 'react'\n\nimport { AppwriteContext } from './AppwriteProvider'\n\nexport function useAppwrite() {\n const ctx = useContext(AppwriteContext)\n if (!ctx) throw new Error('Wrap your app in <AppwriteProvider>')\n return ctx\n}\n","import { useContext } from 'react'\nimport { QueryClientContext } from '@tanstack/react-query'\n\nexport function useQueryClient() {\n const ctx = useContext(QueryClientContext)\n if (!ctx) throw new Error('Wrap your app in <QueryClientProvider>')\n return ctx\n}\n","import type { UseMutationOptions } from '@tanstack/react-query'\nimport { useMutation as useReactMutation } from '@tanstack/react-query'\n\nimport type { AppwriteException } from './types'\nimport { useQueryClient } from './useQueryClient'\n\nexport function useMutation<\n TData = unknown,\n TError extends AppwriteException[] = [],\n TVariables = void,\n TContext = unknown,\n>(options: UseMutationOptions<TData, TError, TVariables, TContext>) {\n const queryClient = useQueryClient()\n return useReactMutation<TData, TError, TVariables, TContext>(options, queryClient)\n}\n","import type {\n DefinedInitialDataOptions,\n QueryKey,\n UndefinedInitialDataOptions,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { useQuery as useReactQuery } from '@tanstack/react-query'\n\nimport type { AppwriteException } from './types'\nimport { useQueryClient } from './useQueryClient'\n\nexport function useQuery<\n TQueryFnData,\n TError extends AppwriteException[],\n TData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options:\n | UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>\n | DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>\n | UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n) {\n const queryClient = useQueryClient()\n return useReactQuery<TQueryFnData, TError, TData, TQueryKey>(options, queryClient)\n}\n","import type {\n DefinedInitialDataOptions,\n QueryKey,\n UndefinedInitialDataOptions,\n UseQueryOptions,\n} from '@tanstack/react-query'\nimport { useQuery as useReactQuery } from '@tanstack/react-query'\n\nimport type { AppwriteException } from './types'\nimport { useQueryClient } from './useQueryClient'\n\nexport function useLazyQuery<\n TQueryFnData,\n TError extends AppwriteException[],\n TData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options:\n | UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>\n | DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>\n | UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n) {\n const queryClient = useQueryClient()\n const query = useReactQuery<TQueryFnData, TError, TData, TQueryKey>(\n { ...options, enabled: false },\n queryClient,\n )\n\n return { run: query.refetch, query }\n}\n","import type { QueryKey, UseSuspenseQueryOptions } from '@tanstack/react-query'\nimport { useSuspenseQuery as useSuspenseReactQuery } from '@tanstack/react-query'\n\nimport type { AppwriteException } from './types'\nimport { useQueryClient } from './useQueryClient'\n\nexport function useSuspenseQuery<\n TQueryFnData,\n TError extends AppwriteException[],\n TData,\n TQueryKey extends QueryKey = QueryKey,\n>(options: UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>) {\n const queryClient = useQueryClient()\n return useSuspenseReactQuery<TQueryFnData, TError, TData, TQueryKey>(options, queryClient)\n}\n","import type { ResultOf, TypedDocumentNode } from '@graphql-typed-document-node/core'\nimport { print } from 'graphql'\n\nimport {\n Account,\n Avatars,\n Client,\n Databases,\n Functions,\n Graphql,\n Locale,\n Messaging,\n Realtime,\n Storage,\n TablesDB,\n Teams,\n} from './types'\n\ntype Variables = Record<string, unknown>\n\nconst graphqlObject = (graphqlAppwrite: Graphql) => ({\n client: graphqlAppwrite.client,\n query: async <T, V extends Variables = Variables>({\n query,\n variables,\n }: {\n query: TypedDocumentNode<T, V>\n variables?: V\n }) => {\n const { data, errors } = (await graphqlAppwrite.query({\n query: { query: print(query), variables },\n })) as { data: ResultOf<typeof query>; errors: unknown[] }\n return { data, errors }\n },\n mutation: async <T, V extends Variables = Variables>({\n query,\n variables,\n }: {\n query: TypedDocumentNode<T, V>\n variables?: V\n }) => {\n const { data, errors } = (await graphqlAppwrite.mutation({\n query: { query: print(query), variables },\n })) as { data: ResultOf<typeof query>; errors: unknown[] }\n return { data, errors }\n },\n})\n\nexport function createAppwriteClient({\n endpoint,\n projectId,\n}: {\n endpoint: string\n projectId: string\n}) {\n const client = new Client()\n client.setEndpoint(endpoint).setProject(projectId)\n\n return {\n client,\n account: new Account(client),\n avatars: new Avatars(client),\n realtime: new Realtime(client),\n storage: new Storage(client),\n graphql: graphqlObject(new Graphql(client)),\n databases: new Databases(client),\n functions: new Functions(client),\n locale: new Locale(client),\n messaging: new Messaging(client),\n tablesDB: new TablesDB(client),\n teams: new Teams(client),\n }\n}\n\nexport type AppwriteClient = ReturnType<typeof createAppwriteClient>\n","interface Account {\n acc?: string\n}\n\ninterface Database {\n db?: string\n}\n\ninterface Collection {\n col?: string\n}\n\ninterface Document {\n doc?: string\n}\n\ninterface TablesDB {\n tdb?: string\n}\n\ninterface Table {\n tbl?: string\n}\n\ninterface Row {\n row?: string\n}\n\ninterface Bucket {\n bucket?: string\n}\n\ninterface FileResource {\n file?: string\n}\n\ninterface Actionable {\n actionable?: string\n}\n\ninterface Execution {\n exec?: string\n}\n\ninterface Func {\n func?: string\n}\n\ninterface Team {\n team?: string\n}\n\ninterface Membership {\n membership?: string\n}\n\ninterface Locale {\n locale?: string\n}\n\ninterface Messaging {\n messaging?: string\n}\n\ninterface Transaction {\n transaction?: string\n}\n\nexport class Keys<T> {\n private keys: string[] = ['appwrite']\n private _type!: T\n\n private constructor() {}\n\n private static create<T>(...segments: string[]) {\n const k = new Keys<T>()\n k.keys.push(...segments)\n return k\n }\n\n static account() {\n return Keys.create<Account>('account')\n }\n\n static databases() {\n return Keys.create<Database>('databases')\n }\n\n static database(id: string) {\n return Keys.create<Database>('databases', id)\n }\n\n static tablesDB(id: string) {\n return Keys.create<TablesDB>('tablesDB', id)\n }\n\n static buckets() {\n return Keys.create<Bucket>('buckets')\n }\n\n static bucket(id: string) {\n return Keys.create<Bucket>('buckets', id)\n }\n\n static functions() {\n return Keys.create<Func>('functions')\n }\n\n static function(id: string) {\n return Keys.create<Func>('functions', id)\n }\n\n static teams() {\n return Keys.create<Team>('teams')\n }\n\n static team(id: string) {\n return Keys.create<Team>('teams', id)\n }\n\n static locale() {\n return Keys.create<Locale>('locale')\n }\n\n static messaging() {\n return Keys.create<Messaging>('messaging')\n }\n\n jwt(this: Keys<Account>) {\n this.keys.push('jwt')\n return this as unknown as Keys<Actionable>\n }\n\n anonymous(this: Keys<Account>) {\n this.keys.push('anonymous')\n return this as unknown as Keys<Actionable>\n }\n\n emailToken(this: Keys<Account>) {\n this.keys.push('emailToken')\n return this as unknown as Keys<Actionable>\n }\n\n emailVerification(this: Keys<Account>) {\n this.keys.push('emailVerification')\n return this as unknown as Keys<Actionable>\n }\n\n magicUrl(this: Keys<Account>) {\n this.keys.push('magicUrl')\n return this as unknown as Keys<Actionable>\n }\n\n mfaAuthenticator(this: Keys<Account>) {\n this.keys.push('mfaAuthenticator')\n return this as unknown as Keys<Actionable>\n }\n\n mfaChallenge(this: Keys<Account>) {\n this.keys.push('mfaChallenge')\n return this as unknown as Keys<Actionable>\n }\n\n mfaCodes(this: Keys<Account>) {\n this.keys.push('mfaCodes')\n return this as unknown as Keys<Actionable>\n }\n\n oauth2Token(this: Keys<Account>) {\n this.keys.push('oauth2Token')\n return this as unknown as Keys<Actionable>\n }\n\n phoneToken(this: Keys<Account>) {\n this.keys.push('phoneToken')\n return this as unknown as Keys<Actionable>\n }\n\n phoneVerification(this: Keys<Account>) {\n this.keys.push('phoneVerification')\n return this as unknown as Keys<Actionable>\n }\n\n pushTarget(this: Keys<Account>) {\n this.keys.push('pushTarget')\n return this as unknown as Keys<Actionable>\n }\n\n identity(this: Keys<Account>) {\n this.keys.push('identity')\n return this as unknown as Keys<Actionable>\n }\n\n prefs(this: Keys<Account>) {\n this.keys.push('prefs')\n return this as unknown as Keys<Actionable>\n }\n\n login(this: Keys<Account>) {\n this.keys.push('login')\n return this as unknown as Keys<Actionable>\n }\n\n signUp(this: Keys<Account>) {\n this.keys.push('signUp')\n return this as unknown as Keys<Actionable>\n }\n\n name(this: Keys<Account>) {\n this.keys.push('name')\n return this as unknown as Keys<Actionable>\n }\n\n email(this: Keys<Account>) {\n this.keys.push('email')\n return this as unknown as Keys<Actionable>\n }\n\n phone(this: Keys<Account>) {\n this.keys.push('phone')\n return this as unknown as Keys<Actionable>\n }\n\n password(this: Keys<Account>) {\n this.keys.push('password')\n return this as unknown as Keys<Actionable>\n }\n\n recovery(this: Keys<Account>) {\n this.keys.push('recovery')\n return this as unknown as Keys<Actionable>\n }\n\n mfa(this: Keys<Account>) {\n this.keys.push('mfa')\n return this as unknown as Keys<Actionable>\n }\n\n status(this: Keys<Account>) {\n this.keys.push('status')\n return this as unknown as Keys<Actionable>\n }\n\n logs(this: Keys<Account>) {\n this.keys.push('logs')\n return this as unknown as Keys<Actionable>\n }\n\n verification(this: Keys<Account>) {\n this.keys.push('verification')\n return this as unknown as Keys<Actionable>\n }\n\n session(this: Keys<Account>, id?: string) {\n this.keys.push('sessions')\n if (id) this.keys.push(id)\n return this as unknown as Keys<Actionable>\n }\n\n sessions(this: Keys<Account>) {\n return [...this.keys, 'sessions'] as const\n }\n\n identities(this: Keys<Account>) {\n return [...this.keys, 'identities'] as const\n }\n\n mfaFactors(this: Keys<Account>) {\n return [...this.keys, 'mfaFactors'] as const\n }\n\n collections(this: Keys<Database>) {\n this.keys.push('collections')\n return this as unknown as Keys<Collection>\n }\n\n collection(this: Keys<Database>, id: string) {\n this.keys.push('collections', id)\n return this as unknown as Keys<Collection>\n }\n\n transactions(this: Keys<Database>) {\n this.keys.push('transactions')\n return this as unknown as Keys<Transaction>\n }\n\n transaction(this: Keys<Database>, id: string) {\n this.keys.push('transactions', id)\n return this as unknown as Keys<Transaction>\n }\n\n documents(this: Keys<Collection>) {\n this.keys.push('documents')\n return this as unknown as Keys<Actionable>\n }\n\n document(this: Keys<Collection>, id: string) {\n this.keys.push('documents', id)\n return this as unknown as Keys<Document>\n }\n\n operations(this: Keys<Transaction>) {\n this.keys.push('operations')\n return this as unknown as Keys<Actionable>\n }\n\n table(this: Keys<TablesDB>, id: string) {\n this.keys.push('table', id)\n return this as unknown as Keys<Table>\n }\n\n rows(this: Keys<Table>) {\n this.keys.push('rows')\n return this as unknown as Keys<Actionable>\n }\n\n row(this: Keys<Table>, id: string) {\n this.keys.push('row', id)\n return this as unknown as Keys<Row>\n }\n\n files(this: Keys<Bucket>) {\n this.keys.push('files')\n return this as unknown as Keys<Actionable>\n }\n\n file(this: Keys<Bucket>, id: string) {\n this.keys.push('files', id)\n return this as unknown as Keys<FileResource>\n }\n\n executions(this: Keys<Func>) {\n this.keys.push('executions')\n return this as unknown as Keys<Actionable>\n }\n\n execution(this: Keys<Func>, id: string) {\n this.keys.push('executions', id)\n return this as unknown as Keys<Execution>\n }\n\n teamName(this: Keys<Team>) {\n this.keys.push('name')\n return this as unknown as Keys<Actionable>\n }\n\n teamPrefs(this: Keys<Team>) {\n this.keys.push('prefs')\n return this as unknown as Keys<Actionable>\n }\n\n memberships(this: Keys<Team>) {\n this.keys.push('memberships')\n return this as unknown as Keys<Actionable>\n }\n\n membership(this: Keys<Team>, id: string) {\n this.keys.push('memberships', id)\n return this as unknown as Keys<Membership>\n }\n\n membershipStatus(this: Keys<Team>) {\n this.keys.push('membershipStatus')\n return this as unknown as Keys<Actionable>\n }\n\n continents(this: Keys<Locale>) {\n return [...this.keys, 'continents'] as const\n }\n\n countries(this: Keys<Locale>) {\n return [...this.keys, 'countries'] as const\n }\n\n countriesEU(this: Keys<Locale>) {\n return [...this.keys, 'countriesEU'] as const\n }\n\n countriesPhones(this: Keys<Locale>) {\n return [...this.keys, 'countriesPhones'] as const\n }\n\n currencies(this: Keys<Locale>) {\n return [...this.keys, 'currencies'] as const\n }\n\n languages(this: Keys<Locale>) {\n return [...this.keys, 'languages'] as const\n }\n\n codes(this: Keys<Locale>) {\n return [...this.keys, 'codes'] as const\n }\n\n subscriber(this: Keys<Messaging>) {\n this.keys.push('subscriber')\n return this as unknown as Keys<Actionable>\n }\n\n create() {\n return [...this.keys, 'create'] as const\n }\n\n upsert() {\n return [...this.keys, 'upsert'] as const\n }\n\n update() {\n return [...this.keys, 'update'] as const\n }\n\n delete() {\n return [...this.keys, 'delete'] as const\n }\n\n key() {\n return [...this.keys] as const\n }\n}\n","import { graphql as gql } from 'gql.tada'\n\nimport type { AppwriteClient } from '../client'\nimport { Keys } from '../query/Keys'\n\nexport const getAccount = gql(/* GraphQL */ `\n query AccountGet {\n accountGet {\n _id\n name\n email\n prefs {\n data\n }\n }\n }\n`)\n\nexport function getAccountQuery(client: AppwriteClient) {\n return {\n queryKey: Keys.account().key(),\n queryFn: async () => {\n const { data, errors } = await client.graphql.query({\n query: getAccount,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountGet\n },\n retry: false,\n }\n}\n","import { useEffect, useState } from 'react'\nimport type { ResultOf } from '@graphql-typed-document-node/core'\nimport { Channel } from 'appwrite'\nimport { castDraft, produce } from 'immer'\n\nimport type { getAccount } from './queryOptions'\nimport { getAccountQuery } from './queryOptions'\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, Models, QueryOptions, Realtime } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useLazyQuery } from '../useLazyQuery'\nimport { useQuery } from '../useQuery'\nimport { useQueryClient } from '../useQueryClient'\n\ntype Result = ResultOf<typeof getAccount>['accountGet']\n\nexport function useLazyAccount() {\n const client = useAppwrite()\n const queryClient = useQueryClient()\n const [isActive, setIsActive] = useState(false)\n\n const queryResult = useLazyQuery<Result, AppwriteException[], Result>(\n getAccountQueryOptions(client),\n )\n\n useEffect(() => {\n if (!isActive) return\n\n const subscriptionPromise = subscribe(client.realtime, queryClient)\n return () => {\n void subscriptionPromise.then((sub) => sub.close())\n }\n }, [isActive, client.realtime, queryClient])\n\n return {\n ...queryResult,\n run: () => {\n setIsActive(true)\n return queryResult.run()\n },\n }\n}\n\nexport function useAccount(opts: QueryOptions = {}) {\n const client = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n ...getAccountQueryOptions(client),\n ...opts,\n })\n\n useEffect(() => {\n const subscriptionPromise = subscribe(client.realtime, queryClient)\n return () => {\n void subscriptionPromise.then((sub) => sub.close())\n }\n }, [client.realtime, queryClient])\n\n return queryResult\n}\n\nfunction getAccountQueryOptions(client: ReturnType<typeof useAppwrite>) {\n return getAccountQuery(client)\n}\n\nfunction subscribe<Preferences extends Models.Preferences>(\n realtime: Realtime,\n queryClient: ReturnType<typeof useQueryClient>,\n) {\n return realtime.subscribe<Models.User<Preferences>>(Channel.account(), (response) => {\n const isUpdatingPreferences = response.events.some((event) => event.endsWith('prefs'))\n\n if (isUpdatingPreferences) {\n queryClient.setQueryData<Models.User<Preferences>>(Keys.account().key(), (account) =>\n produce(account, (draft) => {\n if (draft) {\n draft.prefs = castDraft(response.payload.prefs) as typeof draft.prefs\n }\n }),\n )\n\n return\n }\n\n queryClient.setQueryData<Models.User<Preferences>>(Keys.account().key(), response.payload)\n })\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst createAnonymousSession = gql(/* GraphQL */ `\n mutation CreateAnonymousSession {\n accountCreateAnonymousSession {\n _id\n expire\n current\n }\n }\n`)\n\ntype Result = ResultOf<typeof createAnonymousSession>['accountCreateAnonymousSession']\n\nexport function useCreateAnonymousSession() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n mutationKey: Keys.account().anonymous().create(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: createAnonymousSession,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateAnonymousSession\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().anonymous().create() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createEmailToken = gql(/* GraphQL */ `\n mutation CreateEmailToken($userId: String!, $email: String!, $phrase: Boolean) {\n accountCreateEmailToken(userId: $userId, email: $email, phrase: $phrase) {\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createEmailToken>\ntype Result = ResultOf<typeof createEmailToken>['accountCreateEmailToken']\n\nexport function useCreateEmailToken() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().emailToken().create(),\n mutationFn: async ({ userId, email, phrase }) => {\n const { data, errors } = await graphql.mutation({\n query: createEmailToken,\n variables: {\n userId,\n email,\n phrase,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateEmailToken\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\nimport { useSuspenseQuery } from '../useSuspenseQuery'\n\n//The documentation says there should be a duration parameter, but including one causes a server error.\nconst accountCreateJWT = gql(/* GraphQL */ `\n mutation CreateJWT {\n accountCreateJWT {\n jwt\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountCreateJWT>['accountCreateJWT']\n\nexport function useCreateJWT({ gcTime = 600000 }: { gcTime?: number } = {}) {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n gcTime,\n mutationKey: Keys.account().jwt().create(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: accountCreateJWT,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateJWT\n },\n onSuccess: (data) => {\n graphql.client.setJWT(data.jwt)\n queryClient.setQueryData(Keys.account().jwt().create(), data.jwt, { updatedAt: Date.now() })\n },\n })\n\n return { ...queryResult }\n}\n\nexport function useSuspenseCreateJWT({ gcTime = 600000 }: { gcTime?: number } = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useSuspenseQuery<Result, AppwriteException[], Result>({\n gcTime,\n queryKey: Keys.account().jwt().create(),\n queryFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: accountCreateJWT,\n })\n\n if (errors) {\n throw errors\n }\n\n graphql.client.setJWT(data.accountCreateJWT.jwt)\n return data.accountCreateJWT\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createMagicURLToken = gql(/* GraphQL */ `\n mutation CreateMagicURLToken($userId: String!, $email: String!, $url: String, $phrase: Boolean) {\n accountCreateMagicURLToken(userId: $userId, email: $email, url: $url, phrase: $phrase) {\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createMagicURLToken>\ntype Result = ResultOf<typeof createMagicURLToken>['accountCreateMagicURLToken']\n\nexport function useCreateMagicURLToken() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().magicUrl().create(),\n mutationFn: async ({ userId, email, url, phrase }) => {\n const { data, errors } = await graphql.mutation({\n query: createMagicURLToken,\n variables: {\n userId,\n email,\n url,\n phrase,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateMagicURLToken\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountCreateMfaAuthenticator = gql(/* GraphQL */ `\n mutation CreateMfaAuthenticator($type: String!) {\n accountCreateMfaAuthenticator(type: $type) {\n secret\n uri\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountCreateMfaAuthenticator>\ntype Result = ResultOf<typeof accountCreateMfaAuthenticator>['accountCreateMfaAuthenticator']\n\nexport function useCreateMfaAuthenticator() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().mfaAuthenticator().create(),\n mutationFn: async ({ type = 'totp' }) => {\n const { data, errors } = await graphql.mutation({\n query: accountCreateMfaAuthenticator,\n variables: {\n type,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateMfaAuthenticator\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().mfaAuthenticator().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst accountCreateMfaChallenge = gql(/* GraphQL */ `\n mutation CreateMfaChallenge($factor: String!) {\n accountCreateMfaChallenge(factor: $factor) {\n _id\n userId\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountCreateMfaChallenge>\ntype Result = ResultOf<typeof accountCreateMfaChallenge>['accountCreateMfaChallenge']\n\nexport function useCreateMfaChallenge() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().mfaChallenge().create(),\n mutationFn: async ({ factor }) => {\n const { data, errors } = await graphql.mutation({\n query: accountCreateMfaChallenge,\n variables: {\n factor,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateMfaChallenge\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountCreateMfaRecoveryCodes = gql(/* GraphQL */ `\n mutation CreateMfaRecoveryCodes {\n accountCreateMfaRecoveryCodes {\n recoveryCodes\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountCreateMfaRecoveryCodes>['accountCreateMfaRecoveryCodes']\n\nexport function useCreateMfaRecoveryCodes() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n mutationKey: Keys.account().mfaCodes().create(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: accountCreateMfaRecoveryCodes,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateMfaRecoveryCodes\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({\n queryKey: Keys.account().mfaCodes().key(),\n })\n },\n })\n\n return { ...queryResult }\n}\n","import { Keys } from '../query/Keys'\nimport type { AppwriteException, OAuthProvider } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\ntype OAuthTokenProps = {\n provider: OAuthProvider\n success?: string\n failure?: string\n scopes?: string[]\n}\n\nexport function useCreateOAuth2Token() {\n const { account } = useAppwrite()\n\n const queryResult = useMutation<void | string, AppwriteException[], OAuthTokenProps>({\n mutationKey: Keys.account().oauth2Token().create(),\n mutationFn: async ({ provider, success, failure, scopes }) => {\n return account.createOAuth2Token({ provider, success, failure, scopes })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createPhoneToken = gql(/* GraphQL */ `\n mutation CreatePhoneToken($userId: String!, $phone: String!) {\n accountCreatePhoneToken(userId: $userId, phone: $phone) {\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createPhoneToken>\ntype Result = ResultOf<typeof createPhoneToken>['accountCreatePhoneToken']\n\nexport function useCreatePhoneToken() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().phoneToken().create(),\n mutationFn: async ({ userId, phone }) => {\n const { data, errors } = await graphql.mutation({\n query: createPhoneToken,\n variables: {\n userId,\n phone,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreatePhoneToken\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createPhoneVerification = gql(/* GraphQL */ `\n mutation CreatePhoneVerification {\n accountCreatePhoneVerification {\n expire\n }\n }\n`)\n\ntype Result = ResultOf<typeof createPhoneVerification>['accountCreatePhoneVerification']\n\nexport function useCreatePhoneVerification() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n mutationKey: Keys.account().phoneVerification().create(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: createPhoneVerification,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreatePhoneVerification\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountCreatePushTarget = gql(/* GraphQL */ `\n mutation CreatePushTarget($targetId: String!, $identifier: String!, $providerId: String) {\n accountCreatePushTarget(targetId: $targetId, identifier: $identifier, providerId: $providerId) {\n _id\n userId\n providerType\n identifier\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountCreatePushTarget>\ntype Result = ResultOf<typeof accountCreatePushTarget>['accountCreatePushTarget']\n\nexport function useCreatePushTarget() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().pushTarget().create(),\n mutationFn: async ({ targetId, identifier, providerId }) => {\n const { data, errors } = await graphql.mutation({\n query: accountCreatePushTarget,\n variables: {\n targetId,\n identifier,\n providerId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreatePushTarget\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst createSession = gql(/* GraphQL */ `\n mutation CreateSession($userId: String!, $secret: String!) {\n accountCreateSession(userId: $userId, secret: $secret) {\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createSession>\ntype Result = ResultOf<typeof createSession>['accountCreateSession']\n\nexport function useCreateSession() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().session().create(),\n mutationFn: async ({ userId, secret }) => {\n const { data, errors } = await graphql.mutation({\n query: createSession,\n variables: {\n userId,\n secret,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateSession\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createEmailVerification = gql(/* GraphQL */ `\n mutation CreateEmailVerification($url: String!) {\n accountCreateEmailVerification(url: $url) {\n _id\n userId\n secret\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createEmailVerification>\ntype Result = ResultOf<typeof createEmailVerification>['accountCreateEmailVerification']\n\nexport function useCreateEmailVerification() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().emailVerification().create(),\n mutationFn: async ({ url }) => {\n const { data, errors } = await graphql.mutation({\n query: createEmailVerification,\n variables: { url },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateEmailVerification\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountDeleteIdentity = gql(/* GraphQL */ `\n mutation DeleteIdentity($identityId: String!) {\n accountDeleteIdentity(identityId: $identityId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountDeleteIdentity>\ntype Result = ResultOf<typeof accountDeleteIdentity>['accountDeleteIdentity']\n\nexport function useDeleteIdentity() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().identity().delete(),\n mutationFn: async ({ identityId }) => {\n const { data, errors } = await graphql.mutation({\n query: accountDeleteIdentity,\n variables: {\n identityId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountDeleteIdentity ?? { status: '' }\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst deleteMFAAuthenticator = gql(/* GraphQL */ `\n mutation DeleteMfaAuthenticator($type: String!) {\n accountDeleteMfaAuthenticator(type: $type) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteMFAAuthenticator>\ntype Result = ResultOf<typeof deleteMFAAuthenticator>['accountDeleteMfaAuthenticator']\n\nexport function useDeleteMfaAuthenticator() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().mfaAuthenticator().delete(),\n mutationFn: async ({ type = 'totp' }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteMFAAuthenticator,\n variables: {\n type,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountDeleteMfaAuthenticator ?? { status: '' }\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({\n queryKey: Keys.account().mfaAuthenticator().key(),\n })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountDeletePushTarget = gql(/* GraphQL */ `\n mutation DeletePushTarget($targetId: String!) {\n accountDeletePushTarget(targetId: $targetId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountDeletePushTarget>\ntype Result = ResultOf<typeof accountDeletePushTarget>['accountDeletePushTarget']\n\nexport function useDeletePushTarget() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().pushTarget().delete(),\n mutationFn: async ({ targetId }) => {\n const { data, errors } = await graphql.mutation({\n query: accountDeletePushTarget,\n variables: {\n targetId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountDeletePushTarget ?? { status: '' }\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst deleteSession = gql(/* GraphQL */ `\n mutation DeleteSession($sessionId: String!) {\n accountDeleteSession(sessionId: $sessionId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteSession>\ntype Result = ResultOf<typeof deleteSession>['accountDeleteSession']\n\nexport function useDeleteSession() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().session().delete(),\n mutationFn: async ({ sessionId }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteSession,\n variables: {\n sessionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountDeleteSession ?? { status: '' }\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst deleteSessions = gql(/* GraphQL */ `\n mutation DeleteSessions {\n accountDeleteSessions {\n status\n }\n }\n`)\n\ntype Result = ResultOf<typeof deleteSessions>['accountDeleteSessions']\n\nexport function useDeleteSessions() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n mutationKey: Keys.account().session().delete(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: deleteSessions,\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountDeleteSessions ?? { status: '' }\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n queryClient.clear()\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getMFARecoveryCodes = gql(/* GraphQL */ `\n query GetMfaRecoveryCodes {\n accountGetMfaRecoveryCodes {\n recoveryCodes\n }\n }\n`)\n\ntype Result = ResultOf<typeof getMFARecoveryCodes>['accountGetMfaRecoveryCodes']\n\nexport function useGetMfaRecoveryCodes(opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.account().mfaCodes().key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getMFARecoveryCodes,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountGetMfaRecoveryCodes\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst accountGetPrefs = gql(/* GraphQL */ `\n query GetPrefs {\n accountGetPrefs {\n data\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountGetPrefs>['accountGetPrefs']\n\nexport function useGetPrefs(opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.account().prefs().key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: accountGetPrefs,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountGetPrefs\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getSession = gql(/* GraphQL */ `\n query GetSession($sessionId: String!) {\n accountGetSession(sessionId: $sessionId) {\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof getSession>\ntype Result = ResultOf<typeof getSession>['accountGetSession']\n\nexport function useGetSession({ sessionId }: Variables, opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.account().session(sessionId).key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getSession,\n variables: { sessionId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountGetSession\n },\n ...opts,\n })\n\n return queryResult\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst accountListIdentities = gql(/* GraphQL */ `\n query ListIdentities {\n accountListIdentities {\n total\n identities {\n _id\n userId\n provider\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountListIdentities>['accountListIdentities']\n\nexport function useListIdentities(opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.account().identities(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: accountListIdentities,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountListIdentities\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listMFAFactors = gql(/* GraphQL */ `\n query ListMfaFactors {\n accountListMfaFactors {\n totp\n phone\n email\n }\n }\n`)\n\ntype Result = ResultOf<typeof listMFAFactors>['accountListMfaFactors']\n\nexport function useListMfaFactors(opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.account().mfaFactors(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listMFAFactors,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountListMfaFactors\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst accountListSessions = gql(/* GraphQL */ `\n query ListSessions {\n accountListSessions {\n sessions {\n _id\n _createdAt\n osName\n clientName\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountListSessions>['accountListSessions']\n\nexport function useListSessions(opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.account().sessions(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: accountListSessions,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountListSessions\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, OAuthProvider } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\ntype OAuthLoginProps = {\n provider: OAuthProvider\n success?: string\n failure?: string\n}\n\nconst accountCreateEmailPasswordSession = gql(/* GraphQL */ `\n mutation CreateEmailPasswordSession($email: String!, $password: String!) {\n accountCreateEmailPasswordSession(email: $email, password: $password) {\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountCreateEmailPasswordSession>\ntype Result = ResultOf<\n typeof accountCreateEmailPasswordSession\n>['accountCreateEmailPasswordSession']\n\nexport function useLogin() {\n const { account, graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const login = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().login().create(),\n mutationFn: async ({ email, password }) => {\n const { data, errors } = await graphql.mutation({\n query: accountCreateEmailPasswordSession,\n variables: {\n email,\n password,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateEmailPasswordSession\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n },\n })\n\n const oAuthLogin = useMutation<void | string, AppwriteException[], OAuthLoginProps>({\n mutationFn: async ({ provider, success, failure }) => {\n return account.createOAuth2Session({ provider, success, failure })\n },\n })\n\n return {\n login,\n oAuthLogin,\n }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst deleteSession = gql(/* GraphQL */ `\n mutation DeleteSession($sessionId: String!) {\n accountDeleteSession(sessionId: $sessionId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteSession>\ntype Result = ResultOf<typeof deleteSession>['accountDeleteSession']\n\nexport function useLogout() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().session().delete(),\n mutationFn: async ({ sessionId }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteSession,\n variables: {\n sessionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountDeleteSession ?? { status: '' }\n },\n onSuccess: async () => {\n queryClient.clear()\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst accountListLogs = gql(/* GraphQL */ `\n query ListLogs($queries: [String!]) {\n accountListLogs(queries: $queries) {\n total\n logs {\n event\n userId\n userEmail\n userName\n mode\n ip\n time\n osCode\n osName\n osVersion\n clientType\n clientCode\n clientName\n clientVersion\n clientEngine\n clientEngineVersion\n deviceName\n deviceBrand\n deviceModel\n countryCode\n countryName\n }\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountListLogs>\ntype Result = ResultOf<typeof accountListLogs>['accountListLogs']\n\nexport function useLogs({ queries }: Variables, opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: [...Keys.account().logs().key(), ...(queries ?? [])],\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: accountListLogs,\n variables: {\n queries,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountListLogs\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createRecovery = gql(/* GraphQL */ `\n mutation CreateRecovery($email: String!, $url: String!) {\n accountCreateRecovery(email: $email, url: $url) {\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createRecovery>\ntype Result = ResultOf<typeof createRecovery>['accountCreateRecovery']\n\n/**\n * Send the recovery email to the address supplied\n */\nexport function usePasswordRecovery() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().recovery().create(),\n mutationFn: async ({ email, url: resetUrl }) => {\n const { data, errors } = await graphql.mutation({\n query: createRecovery,\n variables: {\n email,\n url: resetUrl,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateRecovery\n },\n onSuccess: async (_, variables) => {\n try {\n localStorage?.setItem('email', variables.email)\n } catch (e: any) {\n console.error(\n 'Could not save email to local storage. If you are using react-native, this is expected.',\n e,\n )\n }\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst updateRecovery = gql(/* GraphQL */ `\n mutation UpdateRecovery($userId: String!, $secret: String!, $password: String!) {\n accountUpdateRecovery(userId: $userId, secret: $secret, password: $password) {\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateRecovery>\ntype Result = ResultOf<typeof updateRecovery>['accountUpdateRecovery']\n\nexport function useResetPassword() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().recovery().update(),\n mutationFn: async ({ userId, secret, password }) => {\n const { data, errors } = await graphql.mutation({\n query: updateRecovery,\n variables: {\n userId,\n secret,\n password,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateRecovery\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { ID } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst createAccount = gql(/* GraphQL */ `\n mutation CreateAccount($userId: String!, $name: String, $email: String!, $password: String!) {\n accountCreate(userId: $userId, name: $name, email: $email, password: $password) {\n name\n email\n }\n }\n`)\n\nconst verify = gql(/* GraphQL */ `\n mutation VerifyEmail($url: String!) {\n accountCreateVerification(url: $url) {\n expire\n }\n }\n`)\n\ntype CreateVariables = VariablesOf<typeof createAccount>\ntype CreateResult = ResultOf<typeof createAccount>['accountCreate']\n\ntype VerifyProps = {\n verifyUrl: string\n}\ntype VerifyResult = ResultOf<typeof verify>['accountCreateVerification']\n\nexport function useSignUp() {\n const { graphql } = useAppwrite()\n\n const signUp = useMutation<CreateResult, AppwriteException[], CreateVariables>({\n mutationKey: Keys.account().signUp().create(),\n mutationFn: async ({ userId, email, password, name }) => {\n const { data, errors } = await graphql.mutation({\n query: createAccount,\n variables: {\n userId: userId ?? ID.unique(),\n name,\n email,\n password,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreate\n },\n })\n\n const verifyEmail = useMutation<VerifyResult, AppwriteException[], VerifyProps>({\n mutationKey: Keys.account().emailVerification().create(),\n mutationFn: async ({ verifyUrl }) => {\n const { data, errors } = await graphql.mutation({\n query: verify,\n variables: {\n url: verifyUrl,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountCreateVerification\n },\n })\n\n return { signUp, verifyEmail }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const accountUpdateEmail = gql(/* GraphQL */ `\n mutation UpdateEmail($email: String!, $password: String!) {\n accountUpdateEmail(email: $email, password: $password) {\n name\n email\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdateEmail>\ntype Result = ResultOf<typeof accountUpdateEmail>['accountUpdateEmail']\n\nexport function useUpdateEmail() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().email().update(),\n mutationFn: async ({ email, password }) => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdateEmail,\n variables: {\n email,\n password,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateEmail\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateEmailVerification = gql(/* GraphQL */ `\n mutation UpdateEmailVerification($userId: String!, $secret: String!) {\n accountUpdateEmailVerification(userId: $userId, secret: $secret) {\n _id\n userId\n secret\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateEmailVerification>\ntype Result = ResultOf<typeof updateEmailVerification>['accountUpdateEmailVerification']\n\nexport function useUpdateEmailVerification() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().emailVerification().update(),\n mutationFn: async ({ userId, secret }) => {\n const { data, errors } = await graphql.mutation({\n query: updateEmailVerification,\n variables: { userId, secret },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateEmailVerification\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateMagicURLSession = gql(/* GraphQL */ `\n mutation UpdateMagicURLSession($userId: String!, $secret: String!) {\n accountUpdateMagicURLSession(userId: $userId, secret: $secret) {\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateMagicURLSession>\ntype Result = ResultOf<typeof updateMagicURLSession>['accountUpdateMagicURLSession']\n\nexport function useUpdateMagicURLSession() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().magicUrl().update(),\n mutationFn: async ({ userId, secret }) => {\n const { data, errors } = await graphql.mutation({\n query: updateMagicURLSession,\n variables: {\n userId,\n secret,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateMagicURLSession\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountUpdateMFA = gql(/* GraphQL */ `\n mutation UpdateMFA($mfa: Boolean!) {\n accountUpdateMFA(mfa: $mfa) {\n mfa\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdateMFA>\ntype Result = ResultOf<typeof accountUpdateMFA>['accountUpdateMFA']\n\nexport function useUpdateMfa() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().mfa().update(),\n mutationFn: async ({ mfa }) => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdateMFA,\n variables: {\n mfa,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateMFA\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().mfaFactors() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateMFAAuthenticator = gql(/* GraphQL */ `\n mutation UpdateMfaAuthenticator($type: String!, $otp: String!) {\n accountUpdateMfaAuthenticator(type: $type, otp: $otp) {\n mfa\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateMFAAuthenticator>\ntype Result = ResultOf<typeof updateMFAAuthenticator>['accountUpdateMfaAuthenticator']\n\nexport function useUpdateMfaAuthenticator() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().mfaAuthenticator().update(),\n mutationFn: async ({ type = 'totp', otp }) => {\n const { data, errors } = await graphql.mutation({\n query: updateMFAAuthenticator,\n variables: {\n type,\n otp,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateMfaAuthenticator\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().mfaFactors() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst accountUpdateMfaChallenge = gql(/* GraphQL */ `\n mutation UpdateMfaChallenge($challengeId: String!, $otp: String!) {\n accountUpdateMfaChallenge(challengeId: $challengeId, otp: $otp) {\n _id\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdateMfaChallenge>\ntype Result = ResultOf<typeof accountUpdateMfaChallenge>['accountUpdateMfaChallenge']\n\nexport function useUpdateMfaChallenge() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().mfaChallenge().update(),\n mutationFn: async ({ challengeId, otp }) => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdateMfaChallenge,\n variables: {\n challengeId,\n otp,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountUpdateMfaChallenge ?? null\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountUpdateMfaRecoveryCodes = gql(/* GraphQL */ `\n mutation UpdateMfaRecoveryCodes {\n accountUpdateMfaRecoveryCodes {\n recoveryCodes\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountUpdateMfaRecoveryCodes>['accountUpdateMfaRecoveryCodes']\n\nexport function useUpdateMfaRecoveryCodes() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n mutationKey: Keys.account().mfaCodes().update(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdateMfaRecoveryCodes,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateMfaRecoveryCodes\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({\n queryKey: Keys.account().mfaCodes().key(),\n })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const accountUpdateName = gql(/* GraphQL */ `\n mutation UpdateName($name: String!) {\n accountUpdateName(name: $name) {\n name\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdateName>\ntype Result = ResultOf<typeof accountUpdateName>['accountUpdateName']\n\nexport function useUpdateName() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().name().update(),\n mutationFn: async ({ name }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: accountUpdateName,\n variables: {\n name,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData.accountUpdateName\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const updatePassword = gql(/* GraphQL */ `\n mutation UpdatePassword($password: String!, $oldPassword: String!) {\n accountUpdatePassword(password: $password, oldPassword: $oldPassword) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updatePassword>\ntype Result = ResultOf<typeof updatePassword>['accountUpdatePassword']\n\nexport function useUpdatePassword() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().password().update(),\n mutationFn: async ({ password, oldPassword }) => {\n const { data, errors } = await graphql.mutation({\n query: updatePassword,\n variables: {\n password,\n oldPassword,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountUpdatePassword\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const accountUpdatePhone = gql(/* GraphQL */ `\n mutation UpdatePhone($phone: String!, $password: String!) {\n accountUpdatePhone(phone: $phone, password: $password) {\n phone\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdatePhone>\ntype Result = ResultOf<typeof accountUpdatePhone>['accountUpdatePhone']\n\nexport function useUpdatePhone() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().phone().update(),\n mutationFn: async ({ phone, password }) => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdatePhone,\n variables: {\n phone,\n password,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdatePhone\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updatePhoneSession = gql(/* GraphQL */ `\n mutation UpdatePhoneSession($userId: String!, $secret: String!) {\n accountUpdatePhoneSession(userId: $userId, secret: $secret) {\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updatePhoneSession>\ntype Result = ResultOf<typeof updatePhoneSession>['accountUpdatePhoneSession']\n\nexport function useUpdatePhoneSession() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().phoneToken().update(),\n mutationFn: async ({ userId, secret }) => {\n const { data, errors } = await graphql.mutation({\n query: updatePhoneSession,\n variables: {\n userId,\n secret,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdatePhoneSession\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nconst updatePhoneVerification = gql(/* GraphQL */ `\n mutation UpdatePhoneVerification($userId: String!, $secret: String!) {\n accountUpdatePhoneVerification(userId: $userId, secret: $secret) {\n expire\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updatePhoneVerification>\ntype Result = ResultOf<typeof updatePhoneVerification>['accountUpdatePhoneVerification']\n\nexport function useUpdatePhoneVerification() {\n const { graphql } = useAppwrite()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().phoneVerification().update(),\n mutationFn: async ({ userId, secret }) => {\n const { data, errors } = await graphql.mutation({\n query: updatePhoneVerification,\n variables: {\n userId,\n secret,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdatePhoneVerification\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const accountUpdatePrefs = gql(/* GraphQL */ `\n mutation UpdatePrefs($prefs: Assoc!) {\n accountUpdatePrefs(prefs: $prefs) {\n prefs {\n data\n }\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdatePrefs>\ntype Result = ResultOf<typeof accountUpdatePrefs>['accountUpdatePrefs']\n\nexport function useUpdatePrefs() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().prefs().update(),\n mutationFn: async ({ prefs }) => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdatePrefs,\n variables: { prefs },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.accountUpdatePrefs\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountUpdatePushTarget = gql(/* GraphQL */ `\n mutation UpdatePushTarget($targetId: String!, $identifier: String!) {\n accountUpdatePushTarget(targetId: $targetId, identifier: $identifier) {\n _id\n userId\n providerType\n identifier\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof accountUpdatePushTarget>\ntype Result = ResultOf<typeof accountUpdatePushTarget>['accountUpdatePushTarget']\n\nexport function useUpdatePushTarget() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().pushTarget().update(),\n mutationFn: async ({ targetId, identifier }) => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdatePushTarget,\n variables: {\n targetId,\n identifier,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdatePushTarget\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateSession = gql(/* GraphQL */ `\n mutation UpdateSession($sessionId: String!) {\n accountUpdateSession(sessionId: $sessionId) {\n userId\n expire\n current\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateSession>\ntype Result = ResultOf<typeof updateSession>['accountUpdateSession']\n\nexport function useUpdateSession() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().session().update(),\n mutationFn: async ({ sessionId }) => {\n const { data, errors } = await graphql.mutation({\n query: updateSession,\n variables: {\n sessionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateSession\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().sessions() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst accountUpdateStatus = gql(/* GraphQL */ `\n mutation UpdateStatus {\n accountUpdateStatus {\n _id\n status\n }\n }\n`)\n\ntype Result = ResultOf<typeof accountUpdateStatus>['accountUpdateStatus']\n\nexport function useUpdateStatus() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], void>({\n mutationKey: Keys.account().status().update(),\n mutationFn: async () => {\n const { data, errors } = await graphql.mutation({\n query: accountUpdateStatus,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateStatus\n },\n onSuccess: async () => {\n void queryClient.invalidateQueries({ queryKey: Keys.account().key() })\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateVerification = gql(/* GraphQL */ `\n mutation UpdateVerification($userId: String!, $secret: String!) {\n accountUpdateVerification(userId: $userId, secret: $secret) {\n secret\n expire\n userId\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateVerification>\ntype Result = ResultOf<typeof updateVerification>['accountUpdateVerification']\n\nexport function useVerification() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const queryResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.account().verification().update(),\n mutationFn: async ({ userId, secret }) => {\n if (!userId || !secret) {\n throw new Error('Missing userId or secret')\n }\n\n const { data, errors } = await graphql.mutation({\n query: updateVerification,\n variables: {\n userId,\n secret,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.accountUpdateVerification\n },\n onSuccess: async () => {\n queryClient.setQueryData(Keys.account().key(), null)\n },\n })\n\n return { ...queryResult }\n}\n","import { useMemo } from 'react'\nimport type { Browser } from 'appwrite'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarBrowser({\n code,\n width,\n height,\n quality,\n}: {\n code: Browser\n width?: number\n height?: number\n quality?: number\n}) {\n const { avatars } = useAppwrite()\n\n const url = useMemo(\n () => avatars?.getBrowser({ code, width, height, quality }),\n [avatars, code, width, height, quality],\n )\n\n return url\n}\n","import { useMemo } from 'react'\nimport type { CreditCard } from 'appwrite'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarCreditCard({\n code,\n width,\n height,\n quality,\n}: {\n code: CreditCard\n width?: number\n height?: number\n quality?: number\n}) {\n const { avatars } = useAppwrite()\n\n const url = useMemo(\n () => avatars?.getCreditCard({ code, width, height, quality }),\n [avatars, code, width, height, quality],\n )\n\n return url\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarFavicon({ url }: { url: string }) {\n const { avatars } = useAppwrite()\n\n const faviconUrl = useMemo(\n () => avatars?.getFavicon({ url }),\n [avatars, url],\n )\n\n return faviconUrl\n}\n","import { useMemo } from 'react'\nimport type { Flag } from 'appwrite'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarFlag({\n code,\n width,\n height,\n quality,\n}: {\n code: Flag\n width?: number\n height?: number\n quality?: number\n}) {\n const { avatars } = useAppwrite()\n\n const url = useMemo(\n () => avatars?.getFlag({ code, width, height, quality }),\n [avatars, code, width, height, quality],\n )\n\n return url\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarImage({\n url,\n width,\n height,\n}: {\n url: string\n width?: number\n height?: number\n}) {\n const { avatars } = useAppwrite()\n\n const imageUrl = useMemo(\n () => avatars?.getImage({ url, width, height }),\n [avatars, url, width, height],\n )\n\n return imageUrl\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarInitials({\n name,\n width,\n height,\n background,\n}: {\n name?: string\n width?: number\n height?: number\n background?: string\n} = {}) {\n const { avatars } = useAppwrite()\n\n const url = useMemo(\n () => avatars?.getInitials({ name, width, height, background }),\n [avatars, name, width, height, background],\n )\n\n return url\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarQR({\n text,\n size,\n margin,\n download,\n}: {\n text: string\n size?: number\n margin?: number\n download?: boolean\n}) {\n const { avatars } = useAppwrite()\n\n const url = useMemo(\n () => avatars?.getQR({ text, size, margin, download }),\n [avatars, text, size, margin, download],\n )\n\n return url\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useAvatarScreenshot({\n url,\n width,\n height,\n}: {\n url: string\n width?: number\n height?: number\n}) {\n const { avatars } = useAppwrite()\n\n const screenshotUrl = useMemo(\n () => avatars?.getScreenshot({ url, width, height }),\n [avatars, url, width, height],\n )\n\n return screenshotUrl\n}\n","import { Query } from 'appwrite'\n\nexport function mergeFieldsQuery(queries: string[], fields?: string[]): string[] {\n if (!fields || fields.length === 0) return queries\n return [Query.select(fields), ...queries]\n}\n","import { graphql as gql } from 'gql.tada'\n\nimport type { Collection, Document } from './types'\nimport { mergeFieldsQuery } from './utils'\nimport type { AppwriteClient } from '../client'\nimport { Keys } from '../query/Keys'\n\ntype DocumentParams<TDocument = Record<string, unknown>> = {\n databaseId: string\n collectionId: string\n documentId: string\n queries?: string[]\n transactionId?: string\n fields?: (keyof TDocument & string)[]\n}\n\nexport const getDocument = gql(/* GraphQL */ `\n query GetDocument(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $queries: [String!]\n $transactionId: String\n ) {\n databasesGetDocument(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n queries: $queries\n transactionId: $transactionId\n ) {\n _id\n data\n }\n }\n`)\n\nexport function getDocumentQuery<TDocument>(\n client: AppwriteClient,\n {\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n }: DocumentParams<TDocument>,\n) {\n const rawQueries = Array.isArray(queries) ? queries : queries ? [queries] : []\n const mergedQueries = mergeFieldsQuery(rawQueries, fields)\n\n return {\n queryKey: [\n ...Keys.database(databaseId).collection(collectionId).document(documentId).key(),\n ...mergedQueries,\n ] as const,\n queryFn: async () => {\n const { data, errors } = await client.graphql.query({\n query: getDocument,\n variables: {\n databaseId,\n collectionId,\n documentId,\n queries: mergedQueries.length > 0 ? mergedQueries : undefined,\n transactionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n const document = {\n ...data.databasesGetDocument,\n ...(data.databasesGetDocument\n ? (JSON.parse(data.databasesGetDocument.data as string) as TDocument)\n : {}),\n } as unknown as Document<TDocument>\n\n return document\n },\n }\n}\n\nexport const listDocuments = gql(/* GraphQL */ `\n query ListDocuments(\n $databaseId: String!\n $collectionId: String!\n $queries: [String!]\n $transactionId: String\n ) {\n databasesListDocuments(\n databaseId: $databaseId\n collectionId: $collectionId\n queries: $queries\n transactionId: $transactionId\n ) {\n total\n documents {\n _id\n data\n }\n }\n }\n`)\n\nexport function getCollectionQuery<TDocument>(\n client: AppwriteClient,\n {\n databaseId,\n collectionId,\n queries,\n transactionId,\n fields,\n }: Omit<DocumentParams<TDocument>, 'documentId'>,\n) {\n const mergedQueries = mergeFieldsQuery(queries ?? [], fields)\n\n return {\n queryKey: [\n ...Keys.database(databaseId).collection(collectionId).key(),\n ...mergedQueries,\n ] as const,\n queryFn: async () => {\n const { data, errors } = await client.graphql.query({\n query: listDocuments,\n variables: {\n databaseId,\n collectionId,\n queries: mergedQueries,\n transactionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n const documents =\n data.databasesListDocuments?.documents?.map((document) => ({\n ...document,\n ...(document ? (JSON.parse(document.data as string) as TDocument) : {}),\n })) ?? []\n\n return {\n total: data.databasesListDocuments?.total ?? 0,\n documents,\n } as unknown as Collection<TDocument>\n },\n }\n}\n","import { useEffect } from 'react'\nimport { Channel } from 'appwrite'\n\nimport { getCollectionQuery } from './queryOptions'\nimport type { Collection, Document } from './types'\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\nimport { useQueryClient } from '../useQueryClient'\nimport { useSuspenseQuery } from '../useSuspenseQuery'\n\ntype DocumentOperation = 'create' | 'update' | 'delete'\n\ntype CollectionParams<TDocument = Record<string, string | number | boolean | null>> = {\n databaseId: string\n collectionId: string\n queries?: string[]\n transactionId?: string\n subscribe?: boolean\n fields?: (keyof TDocument & string)[]\n}\n\nfunction useCollectionQueryConfig<TDocument>({\n databaseId,\n collectionId,\n queries,\n transactionId,\n fields,\n}: Omit<CollectionParams<TDocument>, 'subscribe'>) {\n const client = useAppwrite()\n\n return getCollectionQuery<TDocument>(client, {\n databaseId,\n collectionId,\n queries,\n transactionId,\n fields,\n })\n}\n\nfunction useCollectionRealtime<TDocument>(\n databaseId: string,\n collectionId: string,\n queries: string[],\n subscribe: boolean,\n) {\n const { realtime } = useAppwrite()\n const queryClient = useQueryClient()\n const queriesKey = JSON.stringify(queries)\n\n useEffect(() => {\n if (!subscribe) {\n return\n }\n\n const subscriptionPromise = realtime.subscribe(\n Channel.tablesdb(databaseId).table(collectionId).row(),\n (response) => {\n const [, operation] = response.events[0].match(/\\.(\\w+)$/) as RegExpMatchArray\n const document = response.payload as Document<TDocument>\n\n switch (operation as DocumentOperation) {\n case 'create':\n case 'update':\n case 'delete':\n queryClient.setQueryData(\n Keys.database(databaseId).collection(collectionId).document(document.$id).key(),\n document,\n )\n\n void queryClient.invalidateQueries({\n queryKey: Keys.database(databaseId).collection(collectionId).key(),\n })\n\n break\n }\n },\n )\n\n return () => {\n void subscriptionPromise.then((sub) => sub.close())\n }\n }, [databaseId, collectionId, realtime, queryClient, queriesKey, subscribe])\n}\n\nexport function useCollection<TDocument>(\n {\n databaseId,\n collectionId,\n queries = [],\n transactionId,\n subscribe = true,\n fields,\n }: CollectionParams<TDocument>,\n opts: QueryOptions = {},\n) {\n const config = useCollectionQueryConfig<TDocument>({\n databaseId,\n collectionId,\n queries,\n transactionId,\n fields,\n })\n\n const collection = useQuery<Collection<TDocument>, AppwriteException[], Collection<TDocument>>({\n ...config,\n ...opts,\n })\n\n useCollectionRealtime<TDocument>(databaseId, collectionId, queries, subscribe)\n\n return {\n ...collection,\n documents: collection.data?.documents,\n total: collection.data?.total,\n }\n}\n\nexport function useSuspenseCollection<TDocument>(\n {\n databaseId,\n collectionId,\n queries,\n transactionId,\n subscribe = true,\n fields,\n }: CollectionParams<TDocument>,\n opts: QueryOptions = {},\n) {\n const config = useCollectionQueryConfig<TDocument>({\n databaseId,\n collectionId,\n queries,\n transactionId,\n fields,\n })\n\n const collection = useSuspenseQuery<\n Collection<TDocument>,\n AppwriteException[],\n Collection<TDocument>\n >({\n ...config,\n ...opts,\n })\n\n useCollectionRealtime<TDocument>(databaseId, collectionId, queries, subscribe)\n\n return {\n ...collection,\n documents: collection.data?.documents,\n total: collection.data?.total,\n }\n}\n","import { useRef, useState } from 'react'\nimport { Query } from 'appwrite'\n\nimport { useCollection, useSuspenseCollection } from './useCollection'\nimport type { QueryOptions } from '../types'\n\ntype PaginationParams<TDocument = Record<string, unknown>> = {\n databaseId: string\n collectionId: string\n queries: string[]\n transactionId?: string\n limit?: number\n fields?: (keyof TDocument & string)[]\n}\n\nfunction usePaginationState(limit: number) {\n const [page, setPage] = useState(1)\n const totalRef = useRef(0)\n const offset = (page - 1) * limit\n\n const nextPage = () => {\n setPage((prevPage) => {\n const currentOffset = (prevPage - 1) * limit\n if (totalRef.current > 0 && currentOffset + limit < totalRef.current) {\n return prevPage + 1\n }\n return prevPage\n })\n }\n\n const previousPage = () => {\n setPage((prevPage) => (prevPage > 1 ? prevPage - 1 : prevPage))\n }\n\n const handlePageChange = (newPage: number) => {\n if (newPage < 1) return\n if (totalRef.current > 0) {\n const maxPage = Math.ceil(totalRef.current / limit)\n if (newPage > maxPage) return\n }\n setPage(newPage)\n }\n\n return { page, offset, totalRef, nextPage, previousPage, handlePageChange }\n}\n\nexport function useCollectionWithPagination<TDocument>(\n {\n databaseId,\n collectionId,\n queries,\n transactionId,\n limit = 25,\n fields,\n }: PaginationParams<TDocument>,\n opts: QueryOptions = {},\n) {\n const { page, offset, totalRef, nextPage, previousPage, handlePageChange } =\n usePaginationState(limit)\n\n const collection = useCollection<TDocument>(\n {\n databaseId,\n collectionId,\n queries: [...queries, Query.limit(limit), Query.offset(offset)],\n transactionId,\n fields,\n },\n opts,\n )\n\n const total = collection.data?.total ?? 0\n totalRef.current = total\n\n return {\n documents: collection.data?.documents ?? [],\n total,\n page,\n hasNextPage: total > 0 && offset + limit < total,\n hasPreviousPage: page > 1,\n handlePageChange,\n nextPage,\n previousPage,\n isLoading: collection.isLoading,\n isError: collection.isError,\n error: collection.error,\n isFetching: collection.isFetching,\n }\n}\n\nexport function useSuspenseCollectionWithPagination<TDocument>(\n {\n databaseId,\n collectionId,\n queries,\n transactionId,\n limit = 25,\n fields,\n }: PaginationParams<TDocument>,\n opts: QueryOptions = {},\n) {\n const { page, offset, totalRef, nextPage, previousPage, handlePageChange } =\n usePaginationState(limit)\n\n const collection = useSuspenseCollection<TDocument>(\n {\n databaseId,\n collectionId,\n queries: [...queries, Query.limit(limit), Query.offset(offset)],\n transactionId,\n fields,\n },\n opts,\n )\n\n const total = collection.total ?? 0\n totalRef.current = total\n\n return {\n documents: collection.documents ?? [],\n total,\n page,\n hasNextPage: total > 0 && offset + limit < total,\n hasPreviousPage: page > 1,\n handlePageChange,\n nextPage,\n previousPage,\n isLoading: collection.isLoading,\n isError: collection.isError,\n error: collection.error,\n isFetching: collection.isFetching,\n }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const createDocument = gql(/* GraphQL */ `\n mutation CreateDocument(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $data: Json!\n $permissions: [String!]\n $transactionId: String\n ) {\n databasesCreateDocument(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n data: $data\n permissions: $permissions\n transactionId: $transactionId\n ) {\n _id\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createDocument>\ntype Result = ResultOf<typeof createDocument>['databasesCreateDocument']\n\nexport function useCreateDocument() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<\n Result,\n AppwriteException[],\n Omit<Variables, 'permissions'> & {\n permissions?: string[] | null\n }\n >({\n mutationKey: Keys.databases().collections().documents().create(),\n mutationFn: async ({\n databaseId,\n collectionId,\n documentId,\n data,\n permissions,\n transactionId,\n }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: createDocument,\n variables: {\n databaseId,\n collectionId,\n documentId,\n data: JSON.stringify(data),\n permissions,\n transactionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n return mutationData.databasesCreateDocument\n },\n onSuccess: (result, variables) => {\n const documentKeyPrefix = Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(result._id)\n .key()\n\n void queryClient.invalidateQueries({\n queryKey: Keys.database(variables.databaseId).collection(variables.collectionId).key(),\n })\n\n queryClient.setQueryData<Variables>(documentKeyPrefix, {\n ...variables,\n ...(variables.data as Record<string, unknown>),\n })\n },\n })\n\n return mutationResult\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst createOperations = gql(/* GraphQL */ `\n mutation CreateOperations($transactionId: String!, $operations: [String!]) {\n databasesCreateOperations(transactionId: $transactionId, operations: $operations) {\n _id\n status\n operations\n expiresAt\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createOperations>\ntype Result = ResultOf<typeof createOperations>['databasesCreateOperations']\n\nexport function useCreateOperations() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.databases().transactions().operations().create(),\n mutationFn: async ({ transactionId, operations }) => {\n const { data, errors } = await graphql.mutation({\n query: createOperations,\n variables: { transactionId, operations },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.databasesCreateOperations\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.databases().transaction(variables.transactionId).key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst createTransaction = gql(/* GraphQL */ `\n mutation CreateTransaction($ttl: Int) {\n databasesCreateTransaction(ttl: $ttl) {\n _id\n status\n operations\n expiresAt\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createTransaction>\ntype Result = ResultOf<typeof createTransaction>['databasesCreateTransaction']\n\nexport function useCreateTransaction() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.databases().transactions().create(),\n mutationFn: async ({ ttl } = {}) => {\n const { data, errors } = await graphql.mutation({\n query: createTransaction,\n variables: { ttl },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.databasesCreateTransaction\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({\n queryKey: Keys.databases().transactions().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const decrementDocumentAttribute = gql(/* GraphQL */ `\n mutation DecrementDocumentAttribute(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $attribute: String!\n $value: Int\n $min: Int\n $transactionId: String\n ) {\n databasesDecrementDocumentAttribute(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n attribute: $attribute\n value: $value\n min: $min\n transactionId: $transactionId\n ) {\n _id\n data\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof decrementDocumentAttribute>\ntype Result = ResultOf<typeof decrementDocumentAttribute>['databasesDecrementDocumentAttribute']\n\nexport function useDecrementAttribute() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<\n Result,\n AppwriteException[],\n Variables,\n {\n previousEntries: [queryKey: readonly unknown[], data: unknown][]\n documentKeyPrefix: readonly unknown[]\n }\n >({\n mutationKey: [...Keys.databases().transactions().operations().key(), 'decrementAttribute'],\n mutationFn: async ({\n databaseId,\n collectionId,\n documentId,\n attribute,\n value,\n min,\n transactionId,\n }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: decrementDocumentAttribute,\n variables: { databaseId, collectionId, documentId, attribute, value, min, transactionId },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData.databasesDecrementDocumentAttribute\n },\n onMutate: async (variables) => {\n const documentKeyPrefix = Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(variables.documentId)\n .key()\n\n await queryClient.cancelQueries({ queryKey: documentKeyPrefix })\n\n const previousEntries = queryClient.getQueriesData({ queryKey: documentKeyPrefix })\n\n queryClient.setQueryData<Variables>(documentKeyPrefix, (old) => {\n if (!old) return old\n const current = (old[variables.attribute] as number) ?? 0\n const decrement = variables.value ?? 1\n const newValue =\n variables.min != null ? Math.max(current - decrement, variables.min) : current - decrement\n\n return { ...old, [variables.attribute]: newValue }\n })\n\n return { previousEntries, documentKeyPrefix }\n },\n onError: (_, __, context) => {\n if (context?.previousEntries) {\n for (const [key, data] of context.previousEntries) {\n queryClient.setQueryData(key, data)\n }\n }\n },\n onSettled: (_, __, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.database(variables.databaseId).collection(variables.collectionId).key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const deleteDocument = gql(/* GraphQL */ `\n mutation DeleteDocument(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $transactionId: String\n ) {\n databasesDeleteDocument(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n transactionId: $transactionId\n ) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteDocument>\ntype Result = ResultOf<typeof deleteDocument>['databasesDeleteDocument']\n\nexport function useDeleteDocument() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<\n Result,\n AppwriteException[],\n Variables,\n {\n previousEntries: [queryKey: readonly unknown[], data: unknown][]\n documentKeyPrefix: readonly unknown[]\n }\n >({\n mutationKey: Keys.databases().collections().documents().delete(),\n mutationFn: async ({ databaseId, collectionId, documentId, transactionId }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: deleteDocument,\n variables: {\n databaseId,\n collectionId,\n documentId,\n transactionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData?.databasesDeleteDocument ?? { status: '' }\n },\n onMutate: async (variables) => {\n const documentKeyPrefix = Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(variables.documentId)\n .key()\n\n await queryClient.cancelQueries({ queryKey: documentKeyPrefix })\n\n const previousEntries = queryClient.getQueriesData({ queryKey: documentKeyPrefix })\n\n queryClient.removeQueries({ queryKey: documentKeyPrefix })\n\n return { previousEntries, documentKeyPrefix }\n },\n onError: (_, __, context) => {\n if (context?.previousEntries) {\n for (const [key, data] of context.previousEntries) {\n queryClient.setQueryData(key, data)\n }\n }\n },\n onSettled: (_, __, variables) => {\n queryClient.removeQueries({\n queryKey: Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(variables.documentId)\n .key(),\n })\n void queryClient.invalidateQueries({\n queryKey: Keys.database(variables.databaseId).collection(variables.collectionId).key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst deleteTransaction = gql(/* GraphQL */ `\n mutation DeleteTransaction($transactionId: String!) {\n databasesDeleteTransaction(transactionId: $transactionId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteTransaction>\ntype Result = ResultOf<typeof deleteTransaction>['databasesDeleteTransaction']\n\nexport function useDeleteTransaction() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.databases().transactions().delete(),\n mutationFn: async ({ transactionId }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteTransaction,\n variables: { transactionId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.databasesDeleteTransaction ?? { status: '' }\n },\n onSuccess: (_, variables) => {\n queryClient.removeQueries({\n queryKey: Keys.databases().transaction(variables.transactionId).key(),\n })\n void queryClient.invalidateQueries({\n queryKey: Keys.databases().transactions().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import { useEffect } from 'react'\nimport { Channel } from 'appwrite'\nimport type { VariablesOf } from 'gql.tada'\n\nimport type { getDocument } from './queryOptions'\nimport { getDocumentQuery } from './queryOptions'\nimport type { Document } from './types'\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\nimport { useQueryClient } from '../useQueryClient'\nimport { useSuspenseQuery } from '../useSuspenseQuery'\n\ntype Variables = VariablesOf<typeof getDocument>\n\ntype DocumentParams<TDocument = Record<string, unknown>> = Variables & {\n fields?: (keyof TDocument & string)[]\n}\n\nfunction useDocumentQueryConfig<TDocument>({\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n}: DocumentParams<TDocument>) {\n const client = useAppwrite()\n\n return getDocumentQuery<TDocument>(client, {\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n })\n}\n\nfunction useDocumentRealtime(\n databaseId: string,\n collectionId: string,\n documentId: string,\n queriesKey: string,\n) {\n const { realtime } = useAppwrite()\n const queryClient = useQueryClient()\n\n useEffect(() => {\n const subscriptionPromise = realtime.subscribe(\n Channel.tablesdb(databaseId).table(collectionId).row(documentId).update(),\n (response) => {\n queryClient.setQueryData(\n Keys.database(databaseId).collection(collectionId).document(documentId).key(),\n response.payload,\n )\n },\n )\n\n return () => {\n void subscriptionPromise.then((sub) => sub.close())\n }\n }, [databaseId, collectionId, documentId, realtime, queryClient, queriesKey])\n}\n\nexport function useDocument<TDocument>(\n {\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n }: DocumentParams<TDocument>,\n opts: QueryOptions = {},\n) {\n const config = useDocumentQueryConfig<TDocument>({\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n })\n const queriesKey = JSON.stringify(queries)\n\n const queryResult = useQuery<Document<TDocument>, AppwriteException[], Document<TDocument>>({\n ...config,\n ...opts,\n })\n\n useDocumentRealtime(databaseId, collectionId, documentId, queriesKey)\n\n return { ...queryResult }\n}\n\nexport function useSuspenseDocument<TDocument>(\n {\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n }: DocumentParams<TDocument>,\n opts: QueryOptions = {},\n) {\n const config = useDocumentQueryConfig<TDocument>({\n databaseId,\n collectionId,\n documentId,\n queries,\n transactionId,\n fields,\n })\n const queriesKey = JSON.stringify(queries)\n\n const queryResult = useSuspenseQuery<\n Document<TDocument>,\n AppwriteException[],\n Document<TDocument>\n >({ ...config, ...opts })\n\n useDocumentRealtime(databaseId, collectionId, documentId, queriesKey)\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getTransaction = gql(/* GraphQL */ `\n query GetTransaction($transactionId: String!) {\n databasesGetTransaction(transactionId: $transactionId) {\n _id\n _createdAt\n _updatedAt\n status\n operations\n expiresAt\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof getTransaction>\ntype Result = ResultOf<typeof getTransaction>['databasesGetTransaction']\n\nexport function useGetTransaction({ transactionId }: Variables, opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.databases().transaction(transactionId).key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getTransaction,\n variables: { transactionId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.databasesGetTransaction\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const incrementDocumentAttribute = gql(/* GraphQL */ `\n mutation IncrementDocumentAttribute(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $attribute: String!\n $value: Int\n $max: Int\n $transactionId: String\n ) {\n databasesIncrementDocumentAttribute(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n attribute: $attribute\n value: $value\n max: $max\n transactionId: $transactionId\n ) {\n _id\n data\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof incrementDocumentAttribute>\ntype Result = ResultOf<typeof incrementDocumentAttribute>['databasesIncrementDocumentAttribute']\n\nexport function useIncrementAttribute() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<\n Result,\n AppwriteException[],\n Variables,\n {\n previousEntries: [queryKey: readonly unknown[], data: unknown][]\n documentKeyPrefix: readonly unknown[]\n }\n >({\n mutationKey: [...Keys.databases().transactions().operations().key(), 'incrementAttribute'],\n mutationFn: async ({\n databaseId,\n collectionId,\n documentId,\n attribute,\n value,\n max,\n transactionId,\n }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: incrementDocumentAttribute,\n variables: { databaseId, collectionId, documentId, attribute, value, max, transactionId },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData.databasesIncrementDocumentAttribute\n },\n onMutate: async (variables) => {\n const documentKeyPrefix = Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(variables.documentId)\n .key()\n\n await queryClient.cancelQueries({ queryKey: documentKeyPrefix })\n\n const previousEntries = queryClient.getQueriesData({ queryKey: documentKeyPrefix })\n\n queryClient.setQueryData<Variables>(documentKeyPrefix, (old) => {\n if (!old) return old\n const current = (old[variables.attribute] as number) ?? 0\n const increment = variables.value ?? 1\n const newValue =\n variables.max != null ? Math.min(current + increment, variables.max) : current + increment\n\n return { ...old, [variables.attribute]: newValue }\n })\n\n return { previousEntries, documentKeyPrefix }\n },\n onError: (_, __, context) => {\n if (context?.previousEntries) {\n for (const [key, data] of context.previousEntries) {\n queryClient.setQueryData(key, data)\n }\n }\n },\n onSettled: (_, __, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.database(variables.databaseId).collection(variables.collectionId).key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { Query } from 'appwrite'\n\nimport type { Document } from './types'\nimport { useCollection } from './useCollection'\n\nexport function useInfiniteCollection<TDocument>({\n databaseId,\n collectionId,\n queries,\n transactionId,\n limit = 25,\n subscribe = true,\n fields,\n}: {\n databaseId: string\n collectionId: string\n queries: string[]\n transactionId?: string\n limit?: number\n subscribe?: boolean\n fields?: (keyof TDocument & string)[]\n}) {\n const [page, setPage] = useState(1)\n const [accumulated, setAccumulated] = useState<Document<TDocument>[]>([])\n\n const offset = (page - 1) * limit\n const paginatedQueries = [...queries, Query.limit(limit), Query.offset(offset)]\n\n const collection = useCollection<TDocument>({\n databaseId,\n collectionId,\n queries: paginatedQueries,\n transactionId,\n subscribe,\n fields,\n })\n\n // Accumulate documents across pages\n useEffect(() => {\n if (collection.documents) {\n if (page === 1) {\n setAccumulated([...collection.documents])\n } else {\n setAccumulated((prev) => {\n // Only append if we don't already have documents for this page\n const expectedLength = (page - 1) * limit + collection.documents!.length\n if (prev.length < expectedLength) {\n return [...prev, ...collection.documents!]\n }\n return prev\n })\n }\n }\n }, [collection.documents, page, limit])\n\n const total = collection.total ?? 0\n const hasNextPage = total > 0 && offset + limit < total\n\n const fetchNextPage = useCallback(() => {\n if (hasNextPage && !collection.isFetching) {\n setPage((prev) => prev + 1)\n }\n }, [hasNextPage, collection.isFetching])\n\n const reset = useCallback(() => {\n setAccumulated([])\n setPage(1)\n }, [])\n\n return {\n documents: accumulated,\n total,\n hasNextPage,\n fetchNextPage,\n isFetchingNextPage: page > 1 && collection.isFetching,\n isLoading: collection.isLoading,\n isError: collection.isError,\n error: collection.error,\n isFetching: collection.isFetching,\n reset,\n }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listTransactions = gql(/* GraphQL */ `\n query ListTransactions($queries: String) {\n databasesListTransactions(queries: $queries) {\n total\n transactions {\n _id\n _createdAt\n _updatedAt\n status\n operations\n expiresAt\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listTransactions>['databasesListTransactions']\n\nexport function useListTransactions(\n { queries }: { queries?: string } = {},\n opts: QueryOptions = {},\n) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: [...Keys.databases().transactions().key(), ...(queries ? [queries] : [])],\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listTransactions,\n variables: { queries },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.databasesListTransactions\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ConflictContext, ConflictStrategy } from './types'\n\n/**\n * Applies a conflict resolution strategy to produce the merged document data\n * that should be sent to the server, or `'abort'` to discard the mutation.\n *\n * @returns The resolved field-level data (not the full document — just the\n * fields to write), or `'abort'` if the mutation should be dropped.\n */\nexport function resolveConflict(\n context: ConflictContext,\n strategy: ConflictStrategy,\n): Record<string, unknown> | 'abort' {\n if (typeof strategy === 'function') {\n return strategy(context)\n }\n\n switch (strategy) {\n case 'last-write-wins':\n return extractChangedFields(context.base, context.local)\n\n case 'server-wins':\n return 'abort'\n\n case 'merge-shallow': {\n const localChanges = extractChangedFields(context.base, context.local)\n const remoteChanges = extractChangedFields(context.base, context.remote)\n\n // Remote changes win where both sides modified the same field\n return { ...localChanges, ...remoteChanges }\n }\n }\n}\n\n/**\n * Returns only the fields in `updated` that differ from `original`.\n */\nfunction extractChangedFields(\n original: Record<string, unknown>,\n updated: Record<string, unknown>,\n): Record<string, unknown> {\n const changes: Record<string, unknown> = {}\n\n for (const key of Object.keys(updated)) {\n if (JSON.stringify(original[key]) !== JSON.stringify(updated[key])) {\n changes[key] = updated[key]\n }\n }\n\n return changes\n}\n","import { Keys } from '../..'\nimport { getDocument } from '../../databases/queryOptions'\nimport { updateDocument } from '../../databases/useUpdateDocument'\nimport { resolveConflict } from '../conflictResolution/resolve'\nimport type { ConflictStrategy } from '../conflictResolution/types'\nimport type { MutationFn, Vars } from '../types'\n\n/**\n * Creates a conflict-aware mutationFn for document updates.\n *\n * When a base snapshot is available (persisted in MutationState.context by\n * useUpdateDocument's onMutate), the function fetches the current remote\n * document, runs the configured conflict resolution strategy, and sends the\n * resolved data. If no base snapshot exists (e.g. the mutation was created\n * while online and executed immediately), it falls through to a normal update.\n */\nexport function conflictAwareUpdate(conflictStrategy: ConflictStrategy): MutationFn {\n return async (client, variables, queryClient) => {\n const { databaseId, collectionId, documentId } = variables as {\n databaseId: string\n collectionId: string\n documentId: string\n }\n\n // Look up the mutation instance to read the persisted onMutate context\n const mutation = queryClient\n .getMutationCache()\n .getAll()\n .find((m) => JSON.stringify(m.state.variables) === JSON.stringify(variables))\n\n const baseSnapshot = (mutation?.state.context as { baseSnapshot?: Record<string, unknown> })\n ?.baseSnapshot\n\n let resolvedData = variables.data as Record<string, unknown>\n if (baseSnapshot) {\n const { data: remoteResult, errors: fetchErrors } = await client.graphql.query({\n query: getDocument,\n variables: { databaseId, collectionId, documentId },\n })\n\n if (fetchErrors) throw fetchErrors\n\n const rawRemote = remoteResult.databasesGetDocument\n const remote = {\n ...rawRemote,\n ...(rawRemote ? (JSON.parse(rawRemote.data as string) as Record<string, unknown>) : {}),\n } as Record<string, unknown>\n delete remote.data // Remove the raw JSON string from the remote document\n delete remote._id // Remove the _id field to avoid confusion during conflict resolution\n\n // Build the \"local\" document: the base with the user's changes applied\n const local = { ...baseSnapshot, ...(variables.data as Record<string, unknown>) }\n\n const result = resolveConflict(\n {\n base: baseSnapshot as never,\n remote: remote as never,\n local: local as never,\n mutationKey: [databaseId, collectionId, documentId],\n },\n conflictStrategy,\n )\n\n if (result === 'abort') {\n await queryClient.setQueryData(\n Keys.database(databaseId).collection(collectionId).document(documentId).key(),\n remote,\n )\n return { _id: documentId }\n }\n\n resolvedData = result\n }\n\n const { data, errors } = await client.graphql.mutation({\n query: updateDocument,\n variables: {\n ...variables,\n data: JSON.stringify(resolvedData.data ?? resolvedData),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any,\n })\n\n const newData = (resolvedData.data ?? resolvedData) as Record<string, unknown>\n delete variables.data\n\n const thing = { ...baseSnapshot, ...newData, _id: documentId }\n\n await queryClient.setQueryData(\n Keys.database(databaseId).collection(collectionId).document(documentId).key(),\n (old: Record<string, unknown> | undefined) =>\n old\n ? {\n ...old,\n ...thing,\n }\n : old,\n )\n\n if (errors) throw errors\n return (data as Vars).databasesUpdateDocument as { _id: string }\n }\n}\n","import { onlineManager } from '@tanstack/react-query'\nimport type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport type { ConflictStrategy } from '../offline/conflictResolution/types'\nimport { conflictAwareUpdate } from '../offline/mutations/conflictAwareUpdate'\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const updateDocument = gql(/* GraphQL */ `\n mutation UpdateDocument(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $data: Json\n $permissions: [String!]\n $transactionId: String\n ) {\n databasesUpdateDocument(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n data: $data\n permissions: $permissions\n transactionId: $transactionId\n ) {\n _id\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateDocument>\ntype Result = ResultOf<typeof updateDocument>['databasesUpdateDocument']\n\ntype UpdateDocumentVariables = Omit<Variables, 'permissions'> & {\n permissions?: string[] | null\n}\n\ntype MutationContext = {\n previousEntries: [queryKey: readonly unknown[], data: unknown][]\n documentKeyPrefix: readonly unknown[]\n baseSnapshot: Record<string, unknown> | undefined\n willPerformOfflineMutation: boolean\n}\n\nexport function useUpdateDocument() {\n const appwrite = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<\n Result,\n AppwriteException[],\n UpdateDocumentVariables,\n MutationContext\n >({\n mutationKey: Keys.databases().collections().documents().update(),\n mutationFn: async (\n { databaseId, collectionId, documentId, data, permissions, transactionId },\n ctx,\n ) => {\n const wasOffline = ctx.meta.willPerformOfflineMutation ?? false\n\n if (ctx.meta.willPerformOfflineMutation != null) {\n delete ctx.meta.willPerformOfflineMutation\n }\n\n if (wasOffline) {\n try {\n const updateData = (await conflictAwareUpdate(\n ctx.meta.conflictStrategy as ConflictStrategy,\n )(\n appwrite,\n { databaseId, collectionId, documentId, data, permissions, transactionId },\n queryClient,\n )) as Result\n\n return updateData\n } catch (error) {\n console.error('Conflict-aware update failed:', error)\n throw error\n }\n }\n\n const { data: mutationData, errors } = await appwrite.graphql.mutation({\n query: updateDocument,\n variables: {\n databaseId,\n collectionId,\n documentId,\n data: JSON.stringify(data),\n permissions,\n transactionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData.databasesUpdateDocument\n },\n onMutate: async (variables, ctx) => {\n const documentKeyPrefix = Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(variables.documentId)\n .key()\n\n await queryClient.cancelQueries({ queryKey: documentKeyPrefix })\n\n const previousEntries = queryClient.getQueriesData({ queryKey: documentKeyPrefix })\n\n // Capture a deep copy of the document before optimistic update.\n // This snapshot is persisted in MutationState.context through\n // dehydration and serves as the \"base\" for three-way conflict\n // resolution when a paused mutation is replayed.\n const baseSnapshot = previousEntries.find(([, data]) => data != null)?.[1] as\n | Record<string, unknown>\n | undefined\n const baseSnapshotCopy = baseSnapshot\n ? (JSON.parse(JSON.stringify(baseSnapshot)) as Record<string, unknown>)\n : undefined\n\n queryClient.setQueryData<UpdateDocumentVariables>(documentKeyPrefix, (old) =>\n old ? { ...old, ...(variables.data as Record<string, unknown>) } : old,\n )\n\n const willPerformOfflineMutation = onlineManager.isOnline() === false\n ctx.meta = { ...ctx.meta, willPerformOfflineMutation }\n\n return {\n previousEntries,\n documentKeyPrefix,\n baseSnapshot: baseSnapshotCopy,\n willPerformOfflineMutation,\n }\n },\n onError: (_, __, context) => {\n if (context?.previousEntries) {\n for (const [key, data] of context.previousEntries) {\n queryClient.setQueryData(key, data)\n }\n }\n },\n onSettled: (_, __, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.database(variables.databaseId).collection(variables.collectionId).key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateTransaction = gql(/* GraphQL */ `\n mutation UpdateTransaction($transactionId: String!, $commit: Boolean, $rollback: Boolean) {\n databasesUpdateTransaction(\n transactionId: $transactionId\n commit: $commit\n rollback: $rollback\n ) {\n _id\n status\n operations\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateTransaction>\ntype Result = ResultOf<typeof updateTransaction>['databasesUpdateTransaction']\n\nexport function useUpdateTransaction() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.databases().transactions().update(),\n mutationFn: async ({ transactionId, commit, rollback }) => {\n const { data, errors } = await graphql.mutation({\n query: updateTransaction,\n variables: { transactionId, commit, rollback },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.databasesUpdateTransaction\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.databases().transaction(variables.transactionId).key(),\n })\n void queryClient.invalidateQueries({\n queryKey: Keys.databases().transactions().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import { onlineManager } from '@tanstack/react-query'\nimport type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport type { ConflictStrategy } from '../offline'\nimport { conflictAwareUpdate } from '../offline/mutations/conflictAwareUpdate'\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const upsertDocument = gql(/* GraphQL */ `\n mutation UpsertDocument(\n $databaseId: String!\n $collectionId: String!\n $documentId: String!\n $data: Json!\n $permissions: [String!]\n $transactionId: String\n ) {\n databasesUpsertDocument(\n databaseId: $databaseId\n collectionId: $collectionId\n documentId: $documentId\n data: $data\n permissions: $permissions\n transactionId: $transactionId\n ) {\n _id\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof upsertDocument>\ntype Result = ResultOf<typeof upsertDocument>['databasesUpsertDocument']\n\ntype UpsertDocumentVariables = Omit<Variables, 'permissions'> & {\n permissions?: string[] | null\n}\n\ntype MutationContext = {\n previousEntries: [queryKey: readonly unknown[], data: unknown][]\n documentKeyPrefix: readonly unknown[]\n baseSnapshot: Record<string, unknown> | undefined\n willPerformOfflineMutation: boolean\n}\n\nexport function useUpsertDocument() {\n const appwrite = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<\n Result,\n AppwriteException[],\n UpsertDocumentVariables,\n MutationContext\n >({\n mutationKey: Keys.databases().collections().documents().upsert(),\n mutationFn: async (\n { databaseId, collectionId, documentId, data, permissions, transactionId },\n ctx,\n ) => {\n const wasOffline = ctx.meta.willPerformOfflineMutation ?? false\n\n if (ctx.meta.willPerformOfflineMutation != null) {\n delete ctx.meta.willPerformOfflineMutation\n }\n\n if (wasOffline) {\n try {\n const updateData = (await conflictAwareUpdate(\n ctx.meta.conflictStrategy as ConflictStrategy,\n )(\n appwrite,\n { databaseId, collectionId, documentId, data, permissions, transactionId },\n queryClient,\n )) as Result\n\n return updateData\n } catch (error) {\n console.error('Conflict-aware update failed:', error)\n throw error\n }\n }\n\n const { data: mutationData, errors } = await appwrite.graphql.mutation({\n query: upsertDocument,\n variables: {\n databaseId,\n collectionId,\n documentId,\n data: JSON.stringify(data),\n permissions,\n transactionId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData.databasesUpsertDocument\n },\n onMutate: async (variables, ctx) => {\n const documentKeyPrefix = Keys.database(variables.databaseId)\n .collection(variables.collectionId)\n .document(variables.documentId)\n .key()\n\n await queryClient.cancelQueries({ queryKey: documentKeyPrefix })\n\n const previousEntries = queryClient.getQueriesData({ queryKey: documentKeyPrefix })\n\n const baseSnapshot = previousEntries.find(([, data]) => data != null)?.[1] as\n | Record<string, unknown>\n | undefined\n const baseSnapshotCopy = baseSnapshot\n ? (JSON.parse(JSON.stringify(baseSnapshot)) as Record<string, unknown>)\n : undefined\n\n queryClient.setQueryData<UpsertDocumentVariables>(documentKeyPrefix, (old) =>\n old ? { ...old, ...(variables.data as Record<string, unknown>) } : old,\n )\n\n const willPerformOfflineMutation = onlineManager.isOnline() === false\n ctx.meta = { ...ctx.meta, willPerformOfflineMutation }\n\n return {\n previousEntries,\n documentKeyPrefix,\n baseSnapshot: baseSnapshotCopy,\n willPerformOfflineMutation,\n }\n },\n onError: (_, __, context) => {\n if (context?.previousEntries) {\n for (const [key, data] of context.previousEntries) {\n queryClient.setQueryData(key, data)\n }\n }\n },\n onSettled: (_, __, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.database(variables.databaseId).collection(variables.collectionId).key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getLocale = gql(/* GraphQL */ `\n query GetLocale {\n localeGet {\n ip\n countryCode\n country\n continentCode\n continent\n eu\n currency\n }\n }\n`)\n\ntype Result = ResultOf<typeof getLocale>['localeGet']\n\nexport function useLocale() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getLocale,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeGet\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listLocaleCodes = gql(/* GraphQL */ `\n query ListLocaleCodes {\n localeListCodes {\n total\n localeCodes {\n code\n name\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listLocaleCodes>['localeListCodes']\n\nexport function useLocaleCodes() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().codes(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listLocaleCodes,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListCodes\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listContinents = gql(/* GraphQL */ `\n query ListContinents {\n localeListContinents {\n total\n continents {\n name\n code\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listContinents>['localeListContinents']\n\nexport function useLocaleContinents() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().continents(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listContinents,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListContinents\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listCountries = gql(/* GraphQL */ `\n query ListCountries {\n localeListCountries {\n total\n countries {\n name\n code\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listCountries>['localeListCountries']\n\nexport function useLocaleCountries() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().countries(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listCountries,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListCountries\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listCountriesEU = gql(/* GraphQL */ `\n query ListCountriesEU {\n localeListCountriesEU {\n total\n countries {\n name\n code\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listCountriesEU>['localeListCountriesEU']\n\nexport function useLocaleCountriesEU() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().countriesEU(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listCountriesEU,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListCountriesEU\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listCountriesPhones = gql(/* GraphQL */ `\n query ListCountriesPhones {\n localeListCountriesPhones {\n total\n phones {\n code\n countryCode\n countryName\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listCountriesPhones>['localeListCountriesPhones']\n\nexport function useLocaleCountriesPhones() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().countriesPhones(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listCountriesPhones,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListCountriesPhones\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listCurrencies = gql(/* GraphQL */ `\n query ListCurrencies {\n localeListCurrencies {\n total\n currencies {\n symbol\n name\n symbolNative\n decimalDigits\n rounding\n code\n namePlural\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listCurrencies>['localeListCurrencies']\n\nexport function useLocaleCurrencies() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().currencies(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listCurrencies,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListCurrencies\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listLanguages = gql(/* GraphQL */ `\n query ListLanguages {\n localeListLanguages {\n total\n languages {\n name\n code\n nativeName\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listLanguages>['localeListLanguages']\n\nexport function useLocaleLanguages() {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.locale().languages(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listLanguages,\n })\n\n if (errors) {\n throw errors\n }\n\n return data.localeListLanguages\n },\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nexport const createSubscriber = gql(/* GraphQL */ `\n mutation CreateSubscriber($subscriberId: String!, $topicId: String!, $targetId: String!) {\n messagingCreateSubscriber(subscriberId: $subscriberId, topicId: $topicId, targetId: $targetId) {\n _id\n _createdAt\n _updatedAt\n targetId\n userId\n userName\n topicId\n providerType\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createSubscriber>\ntype Result = ResultOf<typeof createSubscriber>['messagingCreateSubscriber']\n\nexport function useCreateSubscriber() {\n const { graphql } = useAppwrite()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.messaging().subscriber().create(),\n mutationFn: async ({ subscriberId, topicId, targetId }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: createSubscriber,\n variables: {\n subscriberId,\n topicId,\n targetId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData?.messagingCreateSubscriber\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\n\nexport const deleteSubscriber = gql(/* GraphQL */ `\n mutation DeleteSubscriber($topicId: String!, $subscriberId: String!) {\n messagingDeleteSubscriber(topicId: $topicId, subscriberId: $subscriberId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteSubscriber>\ntype Result = ResultOf<typeof deleteSubscriber>['messagingDeleteSubscriber']\n\nexport function useDeleteSubscriber() {\n const { graphql } = useAppwrite()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.messaging().subscriber().delete(),\n mutationFn: async ({ topicId, subscriberId }) => {\n const { data: mutationData, errors } = await graphql.mutation({\n query: deleteSubscriber,\n variables: {\n topicId,\n subscriberId,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return mutationData?.messagingDeleteSubscriber ?? { status: '' }\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getFile = gql(/* GraphQL */ `\n query GetFile($bucketId: String!, $fileId: String!) {\n storageGetFile(bucketId: $bucketId, fileId: $fileId) {\n _id\n bucketId\n _createdAt\n _updatedAt\n _permissions\n name\n signature\n mimeType\n sizeOriginal\n chunksTotal\n chunksUploaded\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof getFile>\ntype Result = ResultOf<typeof getFile>['storageGetFile']\n\nexport function useFile({ bucketId, fileId }: Variables) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.bucket(bucketId).file(fileId).key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getFile,\n variables: { bucketId, fileId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.storageGetFile\n },\n })\n\n return { ...queryResult }\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useFileDownload({\n bucketId,\n fileId,\n token,\n}: {\n bucketId: string\n fileId: string\n token?: string\n}) {\n const { storage } = useAppwrite()\n\n const url = useMemo(\n () => storage?.getFileDownload({ bucketId, fileId, token }),\n [storage, bucketId, fileId, token],\n )\n\n return url\n}\n","import { useMemo } from 'react'\nimport type { ImageFormat, ImageGravity } from 'appwrite'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useFilePreview({\n bucketId,\n fileId,\n width,\n height,\n gravity,\n quality,\n borderWidth,\n borderColor,\n borderRadius,\n opacity,\n rotation,\n background,\n output,\n token,\n}: {\n bucketId: string\n fileId: string\n width?: number\n height?: number\n gravity?: ImageGravity\n quality?: number\n borderWidth?: number\n borderColor?: string\n borderRadius?: number\n opacity?: number\n rotation?: number\n background?: string\n output?: ImageFormat\n token?: string\n}) {\n const { storage } = useAppwrite()\n\n const url = useMemo(\n () =>\n storage?.getFilePreview({\n bucketId,\n fileId,\n width,\n height,\n gravity,\n quality,\n borderWidth,\n borderColor,\n borderRadius,\n opacity,\n rotation,\n background,\n output,\n token,\n }),\n [\n storage,\n bucketId,\n fileId,\n width,\n height,\n gravity,\n quality,\n borderWidth,\n borderColor,\n borderRadius,\n opacity,\n rotation,\n background,\n output,\n token,\n ],\n )\n\n return url\n}\n","import { useMemo } from 'react'\n\nimport { useAppwrite } from '../useAppwrite'\n\nexport function useFileView({\n bucketId,\n fileId,\n token,\n}: {\n bucketId: string\n fileId: string\n token?: string\n}) {\n const { storage } = useAppwrite()\n\n const url = useMemo(\n () => storage?.getFileView({ bucketId, fileId, token }),\n [storage, bucketId, fileId, token],\n )\n\n return url\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listFiles = gql(/* GraphQL */ `\n query ListFiles($bucketId: String!, $queries: [String!], $search: String) {\n storageListFiles(bucketId: $bucketId, queries: $queries, search: $search) {\n total\n files {\n _id\n bucketId\n _createdAt\n _updatedAt\n _permissions\n name\n signature\n mimeType\n sizeOriginal\n chunksTotal\n chunksUploaded\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listFiles>['storageListFiles']\n\nexport function useFiles({\n bucketId,\n queries,\n search,\n}: {\n bucketId: string\n queries?: string[]\n search?: string\n}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: [...Keys.bucket(bucketId).files().key(), ...(queries ?? []), ...(search ? [search] : [])],\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listFiles,\n variables: { bucketId, queries, search },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.storageListFiles\n },\n })\n\n return { ...queryResult }\n}\n","import { Keys } from '../query/Keys'\nimport type { AppwriteException, Models } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\ntype CreateFileVariables = {\n bucketId: string\n fileId: string\n file: File\n permissions?: string[]\n onProgress?: (progress: {\n $id: string\n progress: number\n sizeUploaded: number\n chunksTotal: number\n chunksUploaded: number\n }) => void\n}\n\nexport function useCreateFile() {\n const { storage } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Models.File, AppwriteException[], CreateFileVariables>({\n mutationKey: Keys.buckets().files().create(),\n mutationFn: async ({ bucketId, fileId, file, permissions, onProgress }) => {\n return storage.createFile({\n bucketId,\n fileId,\n file,\n permissions,\n onProgress,\n })\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.bucket(variables.bucketId).files().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const updateFile = gql(/* GraphQL */ `\n mutation UpdateFile(\n $bucketId: String!\n $fileId: String!\n $name: String\n $permissions: [String!]\n ) {\n storageUpdateFile(\n bucketId: $bucketId\n fileId: $fileId\n name: $name\n permissions: $permissions\n ) {\n _id\n bucketId\n name\n _permissions\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateFile>\ntype Result = ResultOf<typeof updateFile>['storageUpdateFile']\n\nexport function useUpdateFile() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.buckets().files().update(),\n mutationFn: async ({ bucketId, fileId, name, permissions }) => {\n const { data, errors } = await graphql.mutation({\n query: updateFile,\n variables: { bucketId, fileId, name, permissions },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.storageUpdateFile\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.bucket(variables.bucketId).files().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const deleteFile = gql(/* GraphQL */ `\n mutation DeleteFile($bucketId: String!, $fileId: String!) {\n storageDeleteFile(bucketId: $bucketId, fileId: $fileId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteFile>\ntype Result = ResultOf<typeof deleteFile>['storageDeleteFile']\n\nexport function useDeleteFile() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.buckets().files().delete(),\n mutationFn: async ({ bucketId, fileId }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteFile,\n variables: { bucketId, fileId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.storageDeleteFile ?? { status: '' }\n },\n onSuccess: (_, variables) => {\n queryClient.removeQueries({\n queryKey: Keys.bucket(variables.bucketId).file(variables.fileId).key(),\n })\n void queryClient.invalidateQueries({\n queryKey: Keys.bucket(variables.bucketId).files().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import { graphql as gql } from 'gql.tada'\n\nimport type { AppwriteClient } from '../client'\nimport { Keys } from '../query/Keys'\n\nexport const getTeam = gql(/* GraphQL */ `\n query GetTeam($teamId: String!) {\n teamsGet(teamId: $teamId) {\n _id\n _createdAt\n _updatedAt\n name\n total\n prefs {\n data\n }\n }\n }\n`)\n\nexport function teamQueryOptions(client: AppwriteClient, { teamId }: { teamId: string }) {\n return {\n queryKey: Keys.team(teamId).key(),\n queryFn: async () => {\n const { data, errors } = await client.graphql.query({\n query: getTeam,\n variables: { teamId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsGet\n },\n }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\n\nimport type { getTeam } from './queryOptions'\nimport { teamQueryOptions } from './queryOptions'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\ntype Variables = VariablesOf<typeof getTeam>\ntype Result = ResultOf<typeof getTeam>['teamsGet']\n\nexport function useTeam({ teamId }: Variables, opts: QueryOptions = {}) {\n const client = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n ...teamQueryOptions(client, { teamId }),\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listTeams = gql(/* GraphQL */ `\n query ListTeams($queries: [String!], $search: String) {\n teamsList(queries: $queries, search: $search) {\n total\n teams {\n _id\n _createdAt\n _updatedAt\n name\n total\n prefs {\n data\n }\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listTeams>['teamsList']\n\nexport function useTeams(\n {\n queries,\n search,\n }: {\n queries?: string[]\n search?: string\n } = {},\n opts: QueryOptions = {},\n) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: [...Keys.teams().key(), ...(queries ?? []), ...(search ? [search] : [])],\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listTeams,\n variables: { queries, search },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsList\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getTeamPrefs = gql(/* GraphQL */ `\n query GetTeamPrefs($teamId: String!) {\n teamsGetPrefs(teamId: $teamId) {\n data\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof getTeamPrefs>\ntype Result = ResultOf<typeof getTeamPrefs>['teamsGetPrefs']\n\nexport function useTeamPrefs({ teamId }: Variables, opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.team(teamId).teamPrefs().key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getTeamPrefs,\n variables: { teamId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsGetPrefs\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getMembership = gql(/* GraphQL */ `\n query GetMembership($teamId: String!, $membershipId: String!) {\n teamsGetMembership(teamId: $teamId, membershipId: $membershipId) {\n _id\n _createdAt\n _updatedAt\n userId\n userName\n userEmail\n teamId\n teamName\n invited\n joined\n confirm\n mfa\n roles\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof getMembership>\ntype Result = ResultOf<typeof getMembership>['teamsGetMembership']\n\nexport function useTeamMembership({ teamId, membershipId }: Variables, opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.team(teamId).membership(membershipId).key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getMembership,\n variables: { teamId, membershipId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsGetMembership\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listMemberships = gql(/* GraphQL */ `\n query ListMemberships($teamId: String!, $queries: [String!], $search: String) {\n teamsListMemberships(teamId: $teamId, queries: $queries, search: $search) {\n total\n memberships {\n _id\n _createdAt\n _updatedAt\n userId\n userName\n userEmail\n teamId\n teamName\n invited\n joined\n confirm\n mfa\n roles\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listMemberships>['teamsListMemberships']\n\nexport function useTeamMemberships(\n {\n teamId,\n queries,\n search,\n }: {\n teamId: string\n queries?: string[]\n search?: string\n },\n opts: QueryOptions = {},\n) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: [\n ...Keys.team(teamId).memberships().key(),\n ...(queries ?? []),\n ...(search ? [search] : []),\n ],\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listMemberships,\n variables: { teamId, queries, search },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsListMemberships\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const createTeam = gql(/* GraphQL */ `\n mutation CreateTeam($teamId: String!, $name: String!, $roles: [String!]) {\n teamsCreate(teamId: $teamId, name: $name, roles: $roles) {\n _id\n name\n total\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createTeam>\ntype Result = ResultOf<typeof createTeam>['teamsCreate']\n\nexport function useCreateTeam() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().create(),\n mutationFn: async ({ teamId, name, roles }) => {\n const { data, errors } = await graphql.mutation({\n query: createTeam,\n variables: { teamId, name, roles },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsCreate\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: Keys.teams().key() })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const updateTeamName = gql(/* GraphQL */ `\n mutation UpdateTeamName($teamId: String!, $name: String!) {\n teamsUpdateName(teamId: $teamId, name: $name) {\n _id\n name\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateTeamName>\ntype Result = ResultOf<typeof updateTeamName>['teamsUpdateName']\n\nexport function useUpdateTeamName() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().teamName().update(),\n mutationFn: async ({ teamId, name }) => {\n const { data, errors } = await graphql.mutation({\n query: updateTeamName,\n variables: { teamId, name },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsUpdateName\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({ queryKey: Keys.team(variables.teamId).key() })\n void queryClient.invalidateQueries({ queryKey: Keys.teams().key() })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const updateTeamPrefs = gql(/* GraphQL */ `\n mutation UpdateTeamPrefs($teamId: String!, $prefs: Assoc!) {\n teamsUpdatePrefs(teamId: $teamId, prefs: $prefs) {\n data\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateTeamPrefs>\ntype Result = ResultOf<typeof updateTeamPrefs>['teamsUpdatePrefs']\n\nexport function useUpdateTeamPrefs() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().teamPrefs().update(),\n mutationFn: async ({ teamId, prefs }) => {\n const { data, errors } = await graphql.mutation({\n query: updateTeamPrefs,\n variables: { teamId, prefs },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsUpdatePrefs\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({ queryKey: Keys.team(variables.teamId).key() })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const deleteTeam = gql(/* GraphQL */ `\n mutation DeleteTeam($teamId: String!) {\n teamsDelete(teamId: $teamId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteTeam>\ntype Result = ResultOf<typeof deleteTeam>['teamsDelete']\n\nexport function useDeleteTeam() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().delete(),\n mutationFn: async ({ teamId }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteTeam,\n variables: { teamId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.teamsDelete ?? { status: '' }\n },\n onSuccess: (_, variables) => {\n queryClient.removeQueries({ queryKey: Keys.team(variables.teamId).key() })\n void queryClient.invalidateQueries({ queryKey: Keys.teams().key() })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const createMembership = gql(/* GraphQL */ `\n mutation CreateMembership(\n $teamId: String!\n $roles: [String!]!\n $email: String\n $userId: String\n $phone: String\n $url: String\n $name: String\n ) {\n teamsCreateMembership(\n teamId: $teamId\n roles: $roles\n email: $email\n userId: $userId\n phone: $phone\n url: $url\n name: $name\n ) {\n _id\n userId\n teamId\n roles\n confirm\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof createMembership>\ntype Result = ResultOf<typeof createMembership>['teamsCreateMembership']\n\nexport function useCreateMembership() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().memberships().create(),\n mutationFn: async ({ teamId, roles, email, userId, phone, url, name }) => {\n const { data, errors } = await graphql.mutation({\n query: createMembership,\n variables: { teamId, roles, email, userId, phone, url, name },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsCreateMembership\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.team(variables.teamId).memberships().key(),\n })\n void queryClient.invalidateQueries({ queryKey: Keys.team(variables.teamId).key() })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const updateMembership = gql(/* GraphQL */ `\n mutation UpdateMembership($teamId: String!, $membershipId: String!, $roles: [String!]!) {\n teamsUpdateMembership(teamId: $teamId, membershipId: $membershipId, roles: $roles) {\n _id\n roles\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateMembership>\ntype Result = ResultOf<typeof updateMembership>['teamsUpdateMembership']\n\nexport function useUpdateMembership() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().memberships().update(),\n mutationFn: async ({ teamId, membershipId, roles }) => {\n const { data, errors } = await graphql.mutation({\n query: updateMembership,\n variables: { teamId, membershipId, roles },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsUpdateMembership\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.team(variables.teamId).memberships().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nconst updateMembershipStatus = gql(/* GraphQL */ `\n mutation UpdateMembershipStatus(\n $teamId: String!\n $membershipId: String!\n $userId: String!\n $secret: String!\n ) {\n teamsUpdateMembershipStatus(\n teamId: $teamId\n membershipId: $membershipId\n userId: $userId\n secret: $secret\n ) {\n _id\n confirm\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof updateMembershipStatus>\ntype Result = ResultOf<typeof updateMembershipStatus>['teamsUpdateMembershipStatus']\n\nexport function useUpdateMembershipStatus() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().membershipStatus().update(),\n mutationFn: async ({ teamId, membershipId, userId, secret }) => {\n const { data, errors } = await graphql.mutation({\n query: updateMembershipStatus,\n variables: { teamId, membershipId, userId, secret },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.teamsUpdateMembershipStatus\n },\n onSuccess: (_, variables) => {\n void queryClient.invalidateQueries({\n queryKey: Keys.team(variables.teamId).memberships().key(),\n })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQueryClient } from '../useQueryClient'\n\nexport const deleteMembership = gql(/* GraphQL */ `\n mutation DeleteMembership($teamId: String!, $membershipId: String!) {\n teamsDeleteMembership(teamId: $teamId, membershipId: $membershipId) {\n status\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof deleteMembership>\ntype Result = ResultOf<typeof deleteMembership>['teamsDeleteMembership']\n\nexport function useDeleteMembership() {\n const { graphql } = useAppwrite()\n const queryClient = useQueryClient()\n\n const mutationResult = useMutation<Result, AppwriteException[], Variables>({\n mutationKey: Keys.teams().memberships().delete(),\n mutationFn: async ({ teamId, membershipId }) => {\n const { data, errors } = await graphql.mutation({\n query: deleteMembership,\n variables: { teamId, membershipId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data?.teamsDeleteMembership ?? { status: '' }\n },\n onSuccess: (_, variables) => {\n queryClient.removeQueries({\n queryKey: Keys.team(variables.teamId).membership(variables.membershipId).key(),\n })\n void queryClient.invalidateQueries({\n queryKey: Keys.team(variables.teamId).memberships().key(),\n })\n void queryClient.invalidateQueries({ queryKey: Keys.team(variables.teamId).key() })\n },\n })\n\n return { ...mutationResult }\n}\n","import type { QueryTypes } from 'appwrite'\nimport { Query } from 'appwrite'\n\ntype FieldValue<T, K extends keyof T> = T[K]\n\ntype ArrayElement<T> = T extends (infer E)[] ? E : never\n\ntype ContainsValue<T, K extends keyof T> = T[K] extends unknown[]\n ? ArrayElement<T[K]> | ArrayElement<T[K]>[]\n : T[K] extends string\n ? string\n : T[K] | T[K][]\n\nexport class QueryBuilder<T extends Record<string, unknown>> {\n private queries: string[] = []\n\n equal<K extends keyof T & string>(field: K, value: FieldValue<T, K> | FieldValue<T, K>[]): this {\n this.queries.push(Query.equal(field, value as QueryTypes))\n return this\n }\n\n notEqual<K extends keyof T & string>(\n field: K,\n value: FieldValue<T, K> | FieldValue<T, K>[],\n ): this {\n this.queries.push(Query.notEqual(field, value as QueryTypes))\n return this\n }\n\n regex<K extends keyof T & string>(field: K, pattern: string): this {\n this.queries.push(Query.regex(field, pattern))\n return this\n }\n\n lessThan<K extends keyof T & string>(field: K, value: FieldValue<T, K>): this {\n this.queries.push(Query.lessThan(field, value as QueryTypes))\n return this\n }\n\n lessThanEqual<K extends keyof T & string>(field: K, value: FieldValue<T, K>): this {\n this.queries.push(Query.lessThanEqual(field, value as QueryTypes))\n return this\n }\n\n greaterThan<K extends keyof T & string>(field: K, value: FieldValue<T, K>): this {\n this.queries.push(Query.greaterThan(field, value as QueryTypes))\n return this\n }\n\n greaterThanEqual<K extends keyof T & string>(field: K, value: FieldValue<T, K>): this {\n this.queries.push(Query.greaterThanEqual(field, value as QueryTypes))\n return this\n }\n\n isNull<K extends keyof T & string>(field: K): this {\n this.queries.push(Query.isNull(field))\n return this\n }\n\n isNotNull<K extends keyof T & string>(field: K): this {\n this.queries.push(Query.isNotNull(field))\n return this\n }\n\n exists<K extends keyof T & string>(fields: K[]): this {\n this.queries.push(Query.exists(fields))\n return this\n }\n\n notExists<K extends keyof T & string>(fields: K[]): this {\n this.queries.push(Query.notExists(fields))\n return this\n }\n\n between<K extends keyof T & string>(\n field: K,\n start: string | number | bigint,\n end: string | number | bigint,\n ): this {\n this.queries.push(Query.between(field, start, end))\n return this\n }\n\n startsWith<K extends keyof T & string>(field: K, prefix: string): this {\n this.queries.push(Query.startsWith(field, prefix))\n return this\n }\n\n endsWith<K extends keyof T & string>(field: K, suffix: string): this {\n this.queries.push(Query.endsWith(field, suffix))\n return this\n }\n\n select<K extends keyof T & string>(fields: K[]): this {\n this.queries.push(Query.select(fields))\n return this\n }\n\n search<K extends keyof T & string>(field: K, term: string): this {\n this.queries.push(Query.search(field, term))\n return this\n }\n\n orderAsc<K extends keyof T & string>(field: K): this {\n this.queries.push(Query.orderAsc(field))\n return this\n }\n\n orderDesc<K extends keyof T & string>(field: K): this {\n this.queries.push(Query.orderDesc(field))\n return this\n }\n\n orderRandom(): this {\n this.queries.push(Query.orderRandom())\n return this\n }\n\n cursorAfter(id: string): this {\n this.queries.push(Query.cursorAfter(id))\n return this\n }\n\n cursorBefore(id: string): this {\n this.queries.push(Query.cursorBefore(id))\n return this\n }\n\n limit(count: number): this {\n this.queries.push(Query.limit(count))\n return this\n }\n\n offset(count: number): this {\n this.queries.push(Query.offset(count))\n return this\n }\n\n contains<K extends keyof T & string>(field: K, value: ContainsValue<T, K>): this {\n this.queries.push(Query.contains(field, value as string | any[]))\n return this\n }\n\n containsAny<K extends keyof T & string>(field: K, values: ContainsValue<T, K>[]): this {\n this.queries.push(Query.containsAny(field, values as any[]))\n return this\n }\n\n containsAll<K extends keyof T & string>(field: K, values: ContainsValue<T, K>[]): this {\n this.queries.push(Query.containsAll(field, values as any[]))\n return this\n }\n\n notContains<K extends keyof T & string>(field: K, value: ContainsValue<T, K>): this {\n this.queries.push(Query.notContains(field, value as string | any[]))\n return this\n }\n\n notSearch<K extends keyof T & string>(field: K, term: string): this {\n this.queries.push(Query.notSearch(field, term))\n return this\n }\n\n notBetween<K extends keyof T & string>(\n field: K,\n start: string | number | bigint,\n end: string | number | bigint,\n ): this {\n this.queries.push(Query.notBetween(field, start, end))\n return this\n }\n\n notStartsWith<K extends keyof T & string>(field: K, prefix: string): this {\n this.queries.push(Query.notStartsWith(field, prefix))\n return this\n }\n\n notEndsWith<K extends keyof T & string>(field: K, suffix: string): this {\n this.queries.push(Query.notEndsWith(field, suffix))\n return this\n }\n\n createdBefore(date: string): this {\n this.queries.push(Query.createdBefore(date))\n return this\n }\n\n createdAfter(date: string): this {\n this.queries.push(Query.createdAfter(date))\n return this\n }\n\n createdBetween(start: string, end: string): this {\n this.queries.push(Query.createdBetween(start, end))\n return this\n }\n\n updatedBefore(date: string): this {\n this.queries.push(Query.updatedBefore(date))\n return this\n }\n\n updatedAfter(date: string): this {\n this.queries.push(Query.updatedAfter(date))\n return this\n }\n\n updatedBetween(start: string, end: string): this {\n this.queries.push(Query.updatedBetween(start, end))\n return this\n }\n\n or(...queries: ((q: QueryBuilder<T>) => QueryBuilder<T>)[]): this {\n const orQueries = queries.map((fn) => fn(new QueryBuilder<T>()).queries).flat()\n this.queries.push(Query.or(orQueries))\n return this\n }\n\n and(...queries: ((q: QueryBuilder<T>) => QueryBuilder<T>)[]): this {\n const andQueries = queries.map((fn) => fn(new QueryBuilder<T>()).queries).flat()\n this.queries.push(Query.and(andQueries))\n return this\n }\n\n elemMatch<K extends keyof T & string>(field: K, query: QueryBuilder<T>): this {\n this.queries.push(Query.elemMatch(field, query.queries))\n return this\n }\n\n distanceEqual<K extends keyof T & string>(\n field: K,\n latitude: number,\n longitude: number,\n distance: number,\n meters: boolean = true,\n ): this {\n this.queries.push(Query.distanceEqual(field, [latitude, longitude], distance, meters))\n return this\n }\n\n distanceNotEqual<K extends keyof T & string>(\n field: K,\n latitude: number,\n longitude: number,\n distance: number,\n meters: boolean = true,\n ): this {\n this.queries.push(Query.distanceNotEqual(field, [latitude, longitude], distance, meters))\n return this\n }\n\n distanceGreaterThan<K extends keyof T & string>(\n field: K,\n latitude: number,\n longitude: number,\n distance: number,\n meters: boolean = true,\n ): this {\n this.queries.push(Query.distanceGreaterThan(field, [latitude, longitude], distance, meters))\n return this\n }\n\n distanceLessThan<K extends keyof T & string>(\n field: K,\n latitude: number,\n longitude: number,\n distance: number,\n meters: boolean = true,\n ): this {\n this.queries.push(Query.distanceLessThan(field, [latitude, longitude], distance, meters))\n return this\n }\n\n intersects<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.intersects(field, points))\n return this\n }\n\n notIntersects<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.notIntersects(field, points))\n return this\n }\n\n crosses<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.crosses(field, points))\n return this\n }\n\n notCrosses<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.notCrosses(field, points))\n return this\n }\n\n overlaps<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.overlaps(field, points))\n return this\n }\n\n notOverlaps<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.notOverlaps(field, points))\n return this\n }\n\n touches<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.touches(field, points))\n return this\n }\n\n notTouches<K extends keyof T & string>(field: K, points: [number, number][]): this {\n this.queries.push(Query.notTouches(field, points))\n return this\n }\n\n build() {\n return [...this.queries]\n }\n}\n\nexport function q<T extends Record<string, unknown>>(): QueryBuilder<T> {\n return new QueryBuilder<T>()\n}\n","import { timeoutManager } from './timeoutManager'\nimport type {\n DefaultError,\n Enabled,\n FetchStatus,\n MutationKey,\n MutationStatus,\n QueryFunction,\n QueryKey,\n QueryOptions,\n StaleTime,\n StaleTimeFunction,\n} from './types'\nimport type { Mutation } from './mutation'\nimport type { FetchOptions, Query } from './query'\n\n// TYPES\n\ntype DropLast<T extends ReadonlyArray<unknown>> = T extends readonly [\n ...infer R,\n unknown,\n]\n ? readonly [...R]\n : never\n\ntype TuplePrefixes<T extends ReadonlyArray<unknown>> = T extends readonly []\n ? readonly []\n : TuplePrefixes<DropLast<T>> | T\n\nexport interface QueryFilters<TQueryKey extends QueryKey = QueryKey> {\n /**\n * Filter to active queries, inactive queries or all queries\n */\n type?: QueryTypeFilter\n /**\n * Match query key exactly\n */\n exact?: boolean\n /**\n * Include queries matching this predicate function\n */\n predicate?: (query: Query) => boolean\n /**\n * Include queries matching this query key\n */\n queryKey?: TQueryKey | TuplePrefixes<TQueryKey>\n /**\n * Include or exclude stale queries\n */\n stale?: boolean\n /**\n * Include queries matching their fetchStatus\n */\n fetchStatus?: FetchStatus\n}\n\nexport interface MutationFilters<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TOnMutateResult = unknown,\n> {\n /**\n * Match mutation key exactly\n */\n exact?: boolean\n /**\n * Include mutations matching this predicate function\n */\n predicate?: (\n mutation: Mutation<TData, TError, TVariables, TOnMutateResult>,\n ) => boolean\n /**\n * Include mutations matching this mutation key\n */\n mutationKey?: TuplePrefixes<MutationKey>\n /**\n * Filter by mutation status\n */\n status?: MutationStatus\n}\n\nexport type Updater<TInput, TOutput> = TOutput | ((input: TInput) => TOutput)\n\nexport type QueryTypeFilter = 'all' | 'active' | 'inactive'\n\n// UTILS\n\n/** @deprecated\n * use `environmentManager.isServer()` instead.\n */\nexport const isServer = typeof window === 'undefined' || 'Deno' in globalThis\n\nexport function noop(): void\nexport function noop(): undefined\nexport function noop() {}\n\nexport function functionalUpdate<TInput, TOutput>(\n updater: Updater<TInput, TOutput>,\n input: TInput,\n): TOutput {\n return typeof updater === 'function'\n ? (updater as (_: TInput) => TOutput)(input)\n : updater\n}\n\nexport function isValidTimeout(value: unknown): value is number {\n return typeof value === 'number' && value >= 0 && value !== Infinity\n}\n\nexport function timeUntilStale(updatedAt: number, staleTime?: number): number {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0)\n}\n\nexport function resolveStaleTime<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n staleTime:\n | undefined\n | StaleTimeFunction<TQueryFnData, TError, TData, TQueryKey>,\n query: Query<TQueryFnData, TError, TData, TQueryKey>,\n): StaleTime | undefined {\n return typeof staleTime === 'function' ? staleTime(query) : staleTime\n}\n\nexport function resolveEnabled<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n enabled: undefined | Enabled<TQueryFnData, TError, TData, TQueryKey>,\n query: Query<TQueryFnData, TError, TData, TQueryKey>,\n): boolean | undefined {\n return typeof enabled === 'function' ? enabled(query) : enabled\n}\n\nexport function matchQuery(\n filters: QueryFilters,\n query: Query<any, any, any, any>,\n): boolean {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale,\n } = filters\n\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive()\n if (type === 'active' && !isActive) {\n return false\n }\n if (type === 'inactive' && isActive) {\n return false\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false\n }\n\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false\n }\n\n if (predicate && !predicate(query)) {\n return false\n }\n\n return true\n}\n\nexport function matchMutation(\n filters: MutationFilters,\n mutation: Mutation<any, any>,\n): boolean {\n const { exact, status, predicate, mutationKey } = filters\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false\n }\n }\n\n if (status && mutation.state.status !== status) {\n return false\n }\n\n if (predicate && !predicate(mutation)) {\n return false\n }\n\n return true\n}\n\nexport function hashQueryKeyByOptions<TQueryKey extends QueryKey = QueryKey>(\n queryKey: TQueryKey,\n options?: Pick<QueryOptions<any, any, any, any>, 'queryKeyHashFn'>,\n): string {\n const hashFn = options?.queryKeyHashFn || hashKey\n return hashFn(queryKey)\n}\n\n/**\n * Default query & mutation keys hash function.\n * Hashes the value into a stable hash.\n */\nexport function hashKey(queryKey: QueryKey | MutationKey): string {\n return JSON.stringify(queryKey, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any)\n : val,\n )\n}\n\n/**\n * Checks if key `b` partially matches with key `a`.\n */\nexport function partialMatchKey(a: QueryKey, b: QueryKey): boolean\nexport function partialMatchKey(a: any, b: any): boolean {\n if (a === b) {\n return true\n }\n\n if (typeof a !== typeof b) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return Object.keys(b).every((key) => partialMatchKey(a[key], b[key]))\n }\n\n return false\n}\n\nconst hasOwn = Object.prototype.hasOwnProperty\n\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\nexport function replaceEqualDeep<T>(a: unknown, b: T, depth?: number): T\nexport function replaceEqualDeep(a: any, b: any, depth = 0): any {\n if (a === b) {\n return a\n }\n\n if (depth > 500) return b\n\n const array = isPlainArray(a) && isPlainArray(b)\n\n if (!array && !(isPlainObject(a) && isPlainObject(b))) return b\n\n const aItems = array ? a : Object.keys(a)\n const aSize = aItems.length\n const bItems = array ? b : Object.keys(b)\n const bSize = bItems.length\n const copy: any = array ? new Array(bSize) : {}\n\n let equalItems = 0\n\n for (let i = 0; i < bSize; i++) {\n const key: any = array ? i : bItems[i]\n const aItem = a[key]\n const bItem = b[key]\n\n if (aItem === bItem) {\n copy[key] = aItem\n if (array ? i < aSize : hasOwn.call(a, key)) equalItems++\n continue\n }\n\n if (\n aItem === null ||\n bItem === null ||\n typeof aItem !== 'object' ||\n typeof bItem !== 'object'\n ) {\n copy[key] = bItem\n continue\n }\n\n const v = replaceEqualDeep(aItem, bItem, depth + 1)\n copy[key] = v\n if (v === aItem) equalItems++\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy\n}\n\n/**\n * Shallow compare objects.\n */\nexport function shallowEqualObjects<T extends Record<string, any>>(\n a: T,\n b: T | undefined,\n): boolean {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isPlainArray(value: unknown): value is Array<unknown> {\n return Array.isArray(value) && value.length === Object.keys(value).length\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\nexport function isPlainObject(o: any): o is Record<PropertyKey, unknown> {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has no constructor\n const ctor = o.constructor\n if (ctor === undefined) {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Handles Objects created by Object.create(<arbitrary prototype>)\n if (Object.getPrototypeOf(o) !== Object.prototype) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function sleep(timeout: number): Promise<void> {\n return new Promise((resolve) => {\n timeoutManager.setTimeout(resolve, timeout)\n })\n}\n\nexport function replaceData<\n TData,\n TOptions extends QueryOptions<any, any, any, any>,\n>(prevData: TData | undefined, data: TData, options: TOptions): TData {\n if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data) as TData\n } else if (options.structuralSharing !== false) {\n if (process.env.NODE_ENV !== 'production') {\n try {\n return replaceEqualDeep(prevData, data)\n } catch (error) {\n console.error(\n `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`,\n )\n\n // Prevent the replaceEqualDeep from being called again down below.\n throw error\n }\n }\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data)\n }\n return data\n}\n\nexport function keepPreviousData<T>(\n previousData: T | undefined,\n): T | undefined {\n return previousData\n}\n\nexport function addToEnd<T>(items: Array<T>, item: T, max = 0): Array<T> {\n const newItems = [...items, item]\n return max && newItems.length > max ? newItems.slice(1) : newItems\n}\n\nexport function addToStart<T>(items: Array<T>, item: T, max = 0): Array<T> {\n const newItems = [item, ...items]\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems\n}\n\nexport const skipToken = Symbol()\nexport type SkipToken = typeof skipToken\n\nexport function ensureQueryFn<\n TQueryFnData = unknown,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: {\n queryFn?: QueryFunction<TQueryFnData, TQueryKey> | SkipToken\n queryHash?: string\n },\n fetchOptions?: FetchOptions<TQueryFnData>,\n): QueryFunction<TQueryFnData, TQueryKey> {\n if (process.env.NODE_ENV !== 'production') {\n if (options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`,\n )\n }\n }\n\n // if we attempt to retry a fetch that was triggered from an initialPromise\n // when we don't have a queryFn yet, we can't retry, so we just return the already rejected initialPromise\n // if an observer has already mounted, we will be able to retry with that queryFn\n if (!options.queryFn && fetchOptions?.initialPromise) {\n return () => fetchOptions.initialPromise!\n }\n\n if (!options.queryFn || options.queryFn === skipToken) {\n return () =>\n Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`))\n }\n\n return options.queryFn\n}\n\nexport function shouldThrowError<T extends (...args: Array<any>) => boolean>(\n throwOnError: boolean | T | undefined,\n params: Parameters<T>,\n): boolean {\n // Allow throwOnError function to override throwing behavior on a per-error basis\n if (typeof throwOnError === 'function') {\n return throwOnError(...params)\n }\n\n return !!throwOnError\n}\n\nexport function addConsumeAwareSignal<T>(\n object: T,\n getSignal: () => AbortSignal,\n onCancelled: VoidFunction,\n): T & { signal: AbortSignal } {\n let consumed = false\n let signal: AbortSignal | undefined\n\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n signal ??= getSignal()\n if (consumed) {\n return signal\n }\n\n consumed = true\n if (signal.aborted) {\n onCancelled()\n } else {\n signal.addEventListener('abort', onCancelled, { once: true })\n }\n\n return signal\n },\n })\n\n return object as T & { signal: AbortSignal }\n}\n","/**\n * Thenable types which matches React's types for promises\n *\n * React seemingly uses `.status`, `.value` and `.reason` properties on a promises to optimistically unwrap data from promises\n *\n * @see https://github.com/facebook/react/blob/main/packages/shared/ReactTypes.js#L112-L138\n * @see https://github.com/facebook/react/blob/4f604941569d2e8947ce1460a0b2997e835f37b9/packages/react-debug-tools/src/ReactDebugHooks.js#L224-L227\n */\n\nimport { noop } from './utils'\n\ninterface Fulfilled<T> {\n status: 'fulfilled'\n value: T\n}\ninterface Rejected {\n status: 'rejected'\n reason: unknown\n}\ninterface Pending<T> {\n status: 'pending'\n\n /**\n * Resolve the promise with a value.\n * Will remove the `resolve` and `reject` properties from the promise.\n */\n resolve: (value: T) => void\n /**\n * Reject the promise with a reason.\n * Will remove the `resolve` and `reject` properties from the promise.\n */\n reject: (reason: unknown) => void\n}\n\nexport type FulfilledThenable<T> = Promise<T> & Fulfilled<T>\nexport type RejectedThenable<T> = Promise<T> & Rejected\nexport type PendingThenable<T> = Promise<T> & Pending<T>\n\nexport type Thenable<T> =\n | FulfilledThenable<T>\n | RejectedThenable<T>\n | PendingThenable<T>\n\nexport function pendingThenable<T>(): PendingThenable<T> {\n let resolve: Pending<T>['resolve']\n let reject: Pending<T>['reject']\n // this could use `Promise.withResolvers()` in the future\n const thenable = new Promise((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n }) as PendingThenable<T>\n\n thenable.status = 'pending'\n thenable.catch(() => {\n // prevent unhandled rejection errors\n })\n\n function finalize(data: Fulfilled<T> | Rejected) {\n Object.assign(thenable, data)\n\n // clear pending props to avoid calling them twice\n delete (thenable as Partial<PendingThenable<T>>).resolve\n delete (thenable as Partial<PendingThenable<T>>).reject\n }\n\n thenable.resolve = (value) => {\n finalize({\n status: 'fulfilled',\n value,\n })\n\n resolve(value)\n }\n thenable.reject = (reason) => {\n finalize({\n status: 'rejected',\n reason,\n })\n\n reject(reason)\n }\n\n return thenable\n}\n\n/**\n * This function takes a Promise-like input and detects whether the data\n * is synchronously available or not.\n *\n * It does not inspect .status, .value or .reason properties of the promise,\n * as those are not always available, and the .status of React's promises\n * should not be considered part of the public API.\n */\nexport function tryResolveSync(promise: Promise<unknown> | Thenable<unknown>) {\n let data: unknown\n\n promise\n .then((result) => {\n data = result\n return result\n }, noop)\n // .catch can be unavailable on certain kinds of thenable's\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n ?.catch(noop)\n\n if (data !== undefined) {\n return { data }\n }\n\n return undefined\n}\n","import { tryResolveSync } from './thenable'\nimport { noop } from './utils'\nimport type {\n DefaultError,\n MutationKey,\n MutationMeta,\n MutationOptions,\n MutationScope,\n QueryKey,\n QueryMeta,\n QueryOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\ntype TransformerFn = (data: any) => any\nfunction defaultTransformerFn(data: any): any {\n return data\n}\n\nexport interface DehydrateOptions {\n serializeData?: TransformerFn\n shouldDehydrateMutation?: (mutation: Mutation) => boolean\n shouldDehydrateQuery?: (query: Query) => boolean\n shouldRedactErrors?: (error: unknown) => boolean\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n deserializeData?: TransformerFn\n queries?: QueryOptions\n mutations?: MutationOptions<unknown, DefaultError, unknown, unknown>\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n meta?: MutationMeta\n scope?: MutationScope\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n promise?: Promise<unknown>\n meta?: QueryMeta\n // This is only optional because older versions of Query might have dehydrated\n // without it which we need to handle for backwards compatibility.\n // This should be changed to required in the future.\n dehydratedAt?: number\n}\n\nexport interface DehydratedState {\n mutations: Array<DehydratedMutation>\n queries: Array<DehydratedQuery>\n}\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n ...(mutation.options.scope && { scope: mutation.options.scope }),\n ...(mutation.meta && { meta: mutation.meta }),\n }\n}\n\n// Most config is not dehydrated but instead meant to configure again when\n// consuming the de/rehydrated data, typically with useQuery on the client.\n// Sometimes it might make sense to prefetch data on the server and include\n// in the html-payload, but not consume it on the initial render.\nfunction dehydrateQuery(\n query: Query,\n serializeData: TransformerFn,\n shouldRedactErrors: (error: unknown) => boolean,\n): DehydratedQuery {\n const dehydratePromise = () => {\n const promise = query.promise?.then(serializeData).catch((error) => {\n if (!shouldRedactErrors(error)) {\n // Reject original error if it should not be redacted\n return Promise.reject(error)\n }\n // If not in production, log original error before rejecting redacted error\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n `A query that was dehydrated as pending ended up rejecting. [${query.queryHash}]: ${error}; The error will be redacted in production builds`,\n )\n }\n return Promise.reject(new Error('redacted'))\n })\n\n // Avoid unhandled promise rejections\n // We need the promise we dehydrate to reject to get the correct result into\n // the query cache, but we also want to avoid unhandled promise rejections\n // in whatever environment the prefetches are happening in.\n promise?.catch(noop)\n\n return promise\n }\n\n return {\n dehydratedAt: Date.now(),\n state: {\n ...query.state,\n ...(query.state.data !== undefined && {\n data: serializeData(query.state.data),\n }),\n },\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n ...(query.state.status === 'pending' && {\n promise: dehydratePromise(),\n }),\n ...(query.meta && { meta: query.meta }),\n }\n}\n\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function defaultShouldDehydrateQuery(query: Query) {\n return query.state.status === 'success'\n}\n\nfunction defaultShouldRedactErrors(_: unknown) {\n return true\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const filterMutation =\n options.shouldDehydrateMutation ??\n client.getDefaultOptions().dehydrate?.shouldDehydrateMutation ??\n defaultShouldDehydrateMutation\n\n const mutations = client\n .getMutationCache()\n .getAll()\n .flatMap((mutation) =>\n filterMutation(mutation) ? [dehydrateMutation(mutation)] : [],\n )\n\n const filterQuery =\n options.shouldDehydrateQuery ??\n client.getDefaultOptions().dehydrate?.shouldDehydrateQuery ??\n defaultShouldDehydrateQuery\n\n const shouldRedactErrors =\n options.shouldRedactErrors ??\n client.getDefaultOptions().dehydrate?.shouldRedactErrors ??\n defaultShouldRedactErrors\n\n const serializeData =\n options.serializeData ??\n client.getDefaultOptions().dehydrate?.serializeData ??\n defaultTransformerFn\n\n const queries = client\n .getQueryCache()\n .getAll()\n .flatMap((query) =>\n filterQuery(query)\n ? [dehydrateQuery(query, serializeData, shouldRedactErrors)]\n : [],\n )\n\n return { mutations, queries }\n}\n\nexport function hydrate(\n client: QueryClient,\n dehydratedState: unknown,\n options?: HydrateOptions,\n): void {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return\n }\n\n const mutationCache = client.getMutationCache()\n const queryCache = client.getQueryCache()\n const deserializeData =\n options?.defaultOptions?.deserializeData ??\n client.getDefaultOptions().hydrate?.deserializeData ??\n defaultTransformerFn\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const mutations = (dehydratedState as DehydratedState).mutations || []\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = (dehydratedState as DehydratedState).queries || []\n\n mutations.forEach(({ state, ...mutationOptions }) => {\n mutationCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.mutations,\n ...options?.defaultOptions?.mutations,\n ...mutationOptions,\n },\n state,\n )\n })\n\n queries.forEach(\n ({ queryKey, state, queryHash, meta, promise, dehydratedAt }) => {\n const syncData = promise ? tryResolveSync(promise) : undefined\n const rawData = state.data === undefined ? syncData?.data : state.data\n const data = rawData === undefined ? rawData : deserializeData(rawData)\n\n let query = queryCache.get(queryHash)\n const existingQueryIsPending = query?.state.status === 'pending'\n const existingQueryIsFetching = query?.state.fetchStatus === 'fetching'\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n const hasNewerSyncData =\n syncData &&\n // We only need this undefined check to handle older dehydration\n // payloads that might not have dehydratedAt\n dehydratedAt !== undefined &&\n dehydratedAt > query.state.dataUpdatedAt\n if (\n state.dataUpdatedAt > query.state.dataUpdatedAt ||\n hasNewerSyncData\n ) {\n // omit fetchStatus from dehydrated state\n // so that query stays in its current fetchStatus\n const { fetchStatus: _ignored, ...serializedState } = state\n query.setState({\n ...serializedState,\n data,\n })\n }\n } else {\n // Restore query\n query = queryCache.build(\n client,\n {\n ...client.getDefaultOptions().hydrate?.queries,\n ...options?.defaultOptions?.queries,\n queryKey,\n queryHash,\n meta,\n },\n // Reset fetch status to idle to avoid\n // query being stuck in fetching state upon hydration\n {\n ...state,\n data,\n fetchStatus: 'idle',\n status: data !== undefined ? 'success' : state.status,\n },\n )\n }\n\n if (\n promise &&\n !existingQueryIsPending &&\n !existingQueryIsFetching &&\n // Only hydrate if dehydration is newer than any existing data,\n // this is always true for new queries\n (dehydratedAt === undefined || dehydratedAt > query.state.dataUpdatedAt)\n ) {\n // This doesn't actually fetch - it just creates a retryer\n // which will re-use the passed `initialPromise`\n // Note that we need to call these even when data was synchronously\n // available, as we still need to set up the retryer\n query\n .fetch(undefined, {\n // RSC transformed promises are not thenable\n initialPromise: Promise.resolve(promise).then(deserializeData),\n })\n // Avoid unhandled promise rejections\n .catch(noop)\n }\n },\n )\n}\n","import { dehydrate, hydrate } from '@tanstack/query-core'\nimport type {\n DehydrateOptions,\n DehydratedState,\n HydrateOptions,\n NotifyEventType,\n QueryClient,\n} from '@tanstack/query-core'\n\nexport type Promisable<T> = T | PromiseLike<T>\n\nexport interface Persister {\n persistClient: (persistClient: PersistedClient) => Promisable<void>\n restoreClient: () => Promisable<PersistedClient | undefined>\n removeClient: () => Promisable<void>\n}\n\nexport interface PersistedClient {\n timestamp: number\n buster: string\n clientState: DehydratedState\n}\n\nexport interface PersistQueryClientRootOptions {\n /** The QueryClient to persist */\n queryClient: QueryClient\n /** The Persister interface for storing and restoring the cache\n * to/from a persisted location */\n persister: Persister\n /** A unique string that can be used to forcefully\n * invalidate existing caches if they do not share the same buster string */\n buster?: string\n}\n\nexport interface PersistedQueryClientRestoreOptions extends PersistQueryClientRootOptions {\n /** The max-allowed age of the cache in milliseconds.\n * If a persisted cache is found that is older than this\n * time, it will be discarded */\n maxAge?: number\n /** The options passed to the hydrate function */\n hydrateOptions?: HydrateOptions\n}\n\nexport interface PersistedQueryClientSaveOptions extends PersistQueryClientRootOptions {\n /** The options passed to the dehydrate function */\n dehydrateOptions?: DehydrateOptions\n}\n\nexport interface PersistQueryClientOptions\n extends\n PersistedQueryClientRestoreOptions,\n PersistedQueryClientSaveOptions,\n PersistQueryClientRootOptions {}\n\n/**\n * Checks if emitted event is about cache change and not about observers.\n * Useful for persist, where we only want to trigger save when cache is changed.\n */\nconst cacheEventTypes: Array<NotifyEventType> = ['added', 'removed', 'updated']\n\nfunction isCacheEventType(eventType: NotifyEventType) {\n return cacheEventTypes.includes(eventType)\n}\n\n/**\n * Restores persisted data to the QueryCache\n * - data obtained from persister.restoreClient\n * - data is hydrated using hydrateOptions\n * If data is expired, busted, empty, or throws, it runs persister.removeClient\n */\nexport async function persistQueryClientRestore({\n queryClient,\n persister,\n maxAge = 1000 * 60 * 60 * 24,\n buster = '',\n hydrateOptions,\n}: PersistedQueryClientRestoreOptions) {\n try {\n const persistedClient = await persister.restoreClient()\n\n if (persistedClient) {\n if (persistedClient.timestamp) {\n const expired = Date.now() - persistedClient.timestamp > maxAge\n const busted = persistedClient.buster !== buster\n if (expired || busted) {\n return persister.removeClient()\n } else {\n hydrate(queryClient, persistedClient.clientState, hydrateOptions)\n }\n } else {\n return persister.removeClient()\n }\n }\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(err)\n console.warn(\n 'Encountered an error attempting to restore client cache from persisted location. As a precaution, the persisted cache will be discarded.',\n )\n }\n\n await persister.removeClient()\n\n throw err\n }\n}\n\n/**\n * Persists data from the QueryCache\n * - data dehydrated using dehydrateOptions\n * - data is persisted using persister.persistClient\n */\nexport async function persistQueryClientSave({\n queryClient,\n persister,\n buster = '',\n dehydrateOptions,\n}: PersistedQueryClientSaveOptions) {\n const persistClient: PersistedClient = {\n buster,\n timestamp: Date.now(),\n clientState: dehydrate(queryClient, dehydrateOptions),\n }\n\n await persister.persistClient(persistClient)\n}\n\n/**\n * Subscribe to QueryCache and MutationCache updates (for persisting)\n * @returns an unsubscribe function (to discontinue monitoring)\n */\nexport function persistQueryClientSubscribe(\n props: PersistedQueryClientSaveOptions,\n) {\n const unsubscribeQueryCache = props.queryClient\n .getQueryCache()\n .subscribe((event) => {\n if (isCacheEventType(event.type)) {\n persistQueryClientSave(props)\n }\n })\n\n const unsubscribeMutationCache = props.queryClient\n .getMutationCache()\n .subscribe((event) => {\n if (isCacheEventType(event.type)) {\n persistQueryClientSave(props)\n }\n })\n\n return () => {\n unsubscribeQueryCache()\n unsubscribeMutationCache()\n }\n}\n\n/**\n * Restores persisted data to QueryCache and persists further changes.\n */\nexport function persistQueryClient(\n props: PersistQueryClientOptions,\n): [() => void, Promise<void>] {\n let hasUnsubscribed = false\n let persistQueryClientUnsubscribe: (() => void) | undefined\n const unsubscribe = () => {\n hasUnsubscribed = true\n persistQueryClientUnsubscribe?.()\n }\n\n // Attempt restore\n const restorePromise = persistQueryClientRestore(props).then(() => {\n if (!hasUnsubscribed) {\n // Subscribe to changes in the query cache to trigger the save\n persistQueryClientUnsubscribe = persistQueryClientSubscribe(props)\n }\n })\n\n return [unsubscribe, restorePromise]\n}\n","import type { QueryClient } from '@tanstack/react-query'\nimport type { TadaDocumentNode } from 'gql.tada'\n\nimport { conflictAwareUpdate } from './conflictAwareUpdate'\nimport { accountUpdateEmail } from '../../account/useUpdateEmail'\nimport { accountUpdateName } from '../../account/useUpdateName'\nimport { updatePassword } from '../../account/useUpdatePassword'\nimport { accountUpdatePhone } from '../../account/useUpdatePhone'\nimport { accountUpdatePrefs } from '../../account/useUpdatePrefs'\nimport type { AppwriteClient } from '../../client'\nimport { createDocument } from '../../databases/useCreateDocument'\nimport { decrementDocumentAttribute } from '../../databases/useDecrementAttribute'\nimport { deleteDocument } from '../../databases/useDeleteDocument'\nimport { incrementDocumentAttribute } from '../../databases/useIncrementAttribute'\nimport { upsertDocument } from '../../databases/useUpsertDocument'\nimport { createSubscriber } from '../../messaging/useCreateSubscriber'\nimport { deleteSubscriber } from '../../messaging/useDeleteSubscriber'\nimport { Keys } from '../../query/Keys'\nimport { createMembership } from '../../teams/useCreateMembership'\nimport { createTeam } from '../../teams/useCreateTeam'\nimport { deleteMembership } from '../../teams/useDeleteMembership'\nimport { deleteTeam } from '../../teams/useDeleteTeam'\nimport { updateMembership } from '../../teams/useUpdateMembership'\nimport { updateTeamName } from '../../teams/useUpdateTeamName'\nimport { updateTeamPrefs } from '../../teams/useUpdateTeamPrefs'\nimport type { ConflictStrategy } from '../conflictResolution/types'\nimport type { MutationFn, Vars } from '../types'\n\n/**\n * Creates a mutationFn that executes a GraphQL mutation and returns the\n * first field from the response data.\n */\nfunction gqlMutation(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n query: TadaDocumentNode<any, any>,\n resultKey: string,\n options?: { serializeData?: boolean },\n): MutationFn {\n return async (client, variables) => {\n const vars = options?.serializeData\n ? { ...variables, data: JSON.stringify(variables.data) }\n : variables\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { data, errors } = await client.graphql.mutation({ query, variables: vars as any })\n if (errors) throw errors\n return (data as Vars)[resultKey]\n }\n}\n\ntype MutationEntry = {\n mutationKey: readonly string[]\n mutationFn: MutationFn\n}\n\nexport const mutationRegistry: MutationEntry[] = [\n {\n mutationKey: Keys.databases().collections().documents().create(),\n mutationFn: gqlMutation(createDocument, 'databasesCreateDocument', { serializeData: true }),\n },\n // The update document entry is registered separately by hydrateMutationDefaults\n // so it can be configured with the user's conflict resolution strategy.\n {\n mutationKey: Keys.databases().collections().documents().delete(),\n mutationFn: gqlMutation(deleteDocument, 'databasesDeleteDocument'),\n },\n {\n mutationKey: Keys.databases().collections().documents().upsert(),\n mutationFn: gqlMutation(upsertDocument, 'databasesUpsertDocument', { serializeData: true }),\n },\n {\n mutationKey: [...Keys.databases().transactions().operations().key(), 'incrementAttribute'],\n mutationFn: gqlMutation(incrementDocumentAttribute, 'databasesIncrementDocumentAttribute'),\n },\n\n {\n mutationKey: [...Keys.databases().transactions().operations().key(), 'decrementAttribute'],\n mutationFn: gqlMutation(decrementDocumentAttribute, 'databasesDecrementDocumentAttribute'),\n },\n\n {\n mutationKey: Keys.account().prefs().update(),\n mutationFn: gqlMutation(accountUpdatePrefs, 'accountUpdatePrefs'),\n },\n {\n mutationKey: Keys.account().name().update(),\n mutationFn: gqlMutation(accountUpdateName, 'accountUpdateName'),\n },\n {\n mutationKey: Keys.account().email().update(),\n mutationFn: gqlMutation(accountUpdateEmail, 'accountUpdateEmail'),\n },\n {\n mutationKey: Keys.account().password().update(),\n mutationFn: gqlMutation(updatePassword, 'accountUpdatePassword'),\n },\n {\n mutationKey: Keys.account().phone().update(),\n mutationFn: gqlMutation(accountUpdatePhone, 'accountUpdatePhone'),\n },\n\n { mutationKey: Keys.teams().create(), mutationFn: gqlMutation(createTeam, 'teamsCreate') },\n { mutationKey: Keys.teams().delete(), mutationFn: gqlMutation(deleteTeam, 'teamsDelete') },\n {\n mutationKey: Keys.teams().teamName().update(),\n mutationFn: gqlMutation(updateTeamName, 'teamsUpdateName'),\n },\n {\n mutationKey: Keys.teams().teamPrefs().update(),\n mutationFn: gqlMutation(updateTeamPrefs, 'teamsUpdatePrefs'),\n },\n {\n mutationKey: Keys.teams().memberships().create(),\n mutationFn: gqlMutation(createMembership, 'teamsCreateMembership'),\n },\n {\n mutationKey: Keys.teams().memberships().delete(),\n mutationFn: gqlMutation(deleteMembership, 'teamsDeleteMembership'),\n },\n {\n mutationKey: Keys.teams().memberships().update(),\n mutationFn: gqlMutation(updateMembership, 'teamsUpdateMembership'),\n },\n\n {\n mutationKey: Keys.messaging().subscriber().create(),\n mutationFn: gqlMutation(createSubscriber, 'messagingCreateSubscriber'),\n },\n {\n mutationKey: Keys.messaging().subscriber().delete(),\n mutationFn: gqlMutation(deleteSubscriber, 'messagingDeleteSubscriber'),\n },\n]\n\n/**\n * Registers all mutation defaults with the QueryClient so that\n * dehydrated/persisted mutations can be replayed on app restart.\n *\n * Call once during app initialization, before rehydrating the persisted\n * mutation cache.\n */\nexport function hydrateMutationDefaults(\n queryClient: QueryClient,\n client: AppwriteClient,\n options?: { conflictStrategy?: ConflictStrategy },\n) {\n for (const entry of mutationRegistry) {\n queryClient.setMutationDefaults(entry.mutationKey, {\n mutationFn: (variables: Vars) => entry.mutationFn(client, variables, queryClient),\n scope: { id: 'appwrite' },\n })\n }\n\n // Register the update document mutation with conflict resolution awareness\n const strategy = options?.conflictStrategy ?? 'last-write-wins'\n queryClient.setMutationDefaults(Keys.databases().collections().documents().update(), {\n mutationFn: (variables: Vars) => conflictAwareUpdate(strategy)(client, variables, queryClient),\n scope: { id: 'appwrite' },\n })\n}\n","import { createAsyncStoragePersister } from '@tanstack/query-async-storage-persister'\nimport type { AsyncStorage, Persister } from '@tanstack/query-persist-client-core'\nimport { persistQueryClient } from '@tanstack/query-persist-client-core'\nimport { onlineManager, QueryClient } from '@tanstack/react-query'\n\nimport type { ConflictStrategy } from './conflictResolution/types'\nimport { hydrateMutationDefaults } from './mutations/registry'\nimport type { NetworkAdapter } from './types'\nimport type { AppwriteClient } from '../client'\nimport { createAppwriteClient } from '../client'\n\nexport type OfflineClient = {\n appwrite: AppwriteClient\n queryClient: QueryClient\n persister: Persister | undefined\n\n /**\n * Start persistence for non-React (imperative) usage.\n * Restores the persisted cache, subscribes to future changes,\n * and replays any paused mutations once the cache is restored.\n *\n * @returns `unsubscribe` to stop persisting and `restored` which resolves\n * when the cache has been rehydrated from storage.\n * @throws If no persister was configured via `storage` or `persister`.\n */\n startPersistence: () => { unsubscribe: () => void; restored: Promise<void> }\n\n conflictStrategy?: ConflictStrategy\n}\n\nconst dehydrateOptions = {\n shouldDehydrateMutation: (mutation: { state: { isPaused: boolean } }) => mutation.state.isPaused,\n shouldDehydrateQuery: (query: { state: { status: string } }) => query.state.status === 'success',\n}\n\n/**\n * Creates an offline-capable Appwrite client with a pre-configured QueryClient.\n *\n * Persistence can be configured in three ways:\n * - **Batteries-included**: pass `storage` (an `AsyncStorage` interface) and\n * the factory builds a TanStack persister automatically.\n * - **Bring your own**: pass a pre-built `persister` (TanStack `Persister`\n * interface) — e.g. one backed by TinyBase, SQLite, etc.\n * - **No persistence**: omit both — you still get offline mutation queuing\n * and network state management.\n *\n * For React apps, pass `client.persister` to `<AppwriteProvider persister={…}>`.\n * For non-React (imperative) usage, call `client.startPersistence()`.\n */\nexport function createOfflineClient({\n endpoint,\n projectId,\n storage,\n persister: externalPersister,\n networkAdapter,\n throttleTime = 1000,\n conflictStrategy = 'last-write-wins',\n}: {\n endpoint: string\n projectId: string\n /** Batteries-included: provide a simple getItem/setItem/removeItem storage. */\n storage?: AsyncStorage\n /** BYOP: provide a pre-built TanStack Persister. */\n persister?: Persister\n networkAdapter: NetworkAdapter\n /** Throttle time for network status changes to prevent rapid toggling. Default: 1000ms. */\n throttleTime?: number\n conflictStrategy?: ConflictStrategy\n}): OfflineClient {\n if (storage && externalPersister) {\n throw new Error('Provide either `storage` or `persister`, not both.')\n }\n\n const appwrite = createAppwriteClient({ endpoint, projectId })\n\n const queryClient = new QueryClient({\n defaultOptions: {\n mutations: {\n networkMode: 'offlineFirst',\n meta: {\n conflictStrategy,\n },\n },\n queries: { networkMode: 'offlineFirst', gcTime: 1000 * 60 * 60 * 24 },\n },\n })\n\n hydrateMutationDefaults(queryClient, appwrite, { conflictStrategy })\n\n const persister =\n externalPersister ??\n (storage\n ? createAsyncStoragePersister({\n storage,\n key: 'appwrite-graphql-offline-cache',\n throttleTime,\n })\n : undefined)\n\n networkAdapter.listen((isOnline) => {\n onlineManager.setOnline(isOnline)\n })\n\n return {\n appwrite,\n queryClient,\n persister,\n startPersistence() {\n if (!persister) {\n throw new Error(\n 'No persister configured. Provide `storage` or `persister` to createOfflineClient.',\n )\n }\n\n const [unsubscribe, restored] = persistQueryClient({\n queryClient,\n persister,\n dehydrateOptions,\n })\n\n const restoredWithResume = restored.then(() => {\n void queryClient.resumePausedMutations()\n })\n\n return { unsubscribe, restored: restoredWithResume }\n },\n }\n}\n","import type { NetworkAdapter } from '../types'\n\nexport function webNetworkAdapter(): NetworkAdapter {\n return {\n listen: (callback) => {\n const updateOnlineStatus = () => {\n callback(navigator.onLine)\n }\n\n window.addEventListener('online', updateOnlineStatus)\n window.addEventListener('offline', updateOnlineStatus)\n\n // Initial status\n callback(navigator.onLine)\n\n return () => {\n window.removeEventListener('online', updateOnlineStatus)\n window.removeEventListener('offline', updateOnlineStatus)\n }\n },\n }\n}\n","import { useState } from 'react'\nimport type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useMutation } from '../useMutation'\nimport { useQuery } from '../useQuery'\nimport { useSuspenseQuery } from '../useSuspenseQuery'\n\ntype Props = {\n functionId: string\n body?: Record<string, string | number | boolean | null>\n async?: boolean\n path?: string\n method?: string\n headers?: Record<string, string | number | boolean | null>\n scheduledAt?: string\n}\n\nconst createExecution = gql(/* GraphQL */ `\n mutation CreateExecution(\n $functionId: String!\n $body: String\n $async: Boolean\n $path: String\n $method: String\n $headers: String\n $scheduledAt: String\n ) {\n functionsCreateExecution(\n functionId: $functionId\n body: $body\n async: $async\n path: $path\n method: $method\n headers: $headers\n scheduledAt: $scheduledAt\n ) {\n _id\n status\n responseStatusCode\n responseBody\n errors\n duration\n }\n }\n`)\n\nconst getFunctionExecution = gql(/* GraphQL */ `\n query GetFunctionExecution($functionId: String!, $executionId: String!) {\n functionsGetExecution(functionId: $functionId, executionId: $executionId) {\n status\n errors\n duration\n responseBody\n requestPath\n }\n }\n`)\n\ntype GetExecutionResult = ResultOf<typeof getFunctionExecution>['functionsGetExecution']\n\ntype ResponseBody = string | null | undefined | Record<string, string | number | boolean | null>\n\nfunction useCurrentExecution({\n currentExecution,\n currentFunction,\n}: {\n currentExecution: string | null\n currentFunction: string | null\n}) {\n const { graphql } = useAppwrite()\n const enabled = !!currentFunction && !!currentExecution\n\n const query = useQuery<GetExecutionResult | null, AppwriteException[], GetExecutionResult | null>(\n {\n queryKey: enabled\n ? Keys.function(currentFunction).execution(currentExecution).key()\n : Keys.functions().key(),\n queryFn: async () => {\n if (!currentExecution || !currentFunction) {\n return null\n }\n const { data } = await graphql.query({\n query: getFunctionExecution,\n variables: {\n functionId: currentFunction,\n executionId: currentExecution,\n },\n })\n\n if (!data?.functionsGetExecution) {\n throw new Error('Execution not found')\n }\n\n return data.functionsGetExecution ?? null\n },\n enabled,\n },\n )\n\n return { ...query }\n}\n\nexport function useFunction() {\n const { graphql } = useAppwrite()\n const [currentExecution, setCurrentExecution] = useState<string | null>(null)\n const [currentFunction, setCurrentFunction] = useState<string | null>(null)\n const getExecution = useCurrentExecution({ currentExecution, currentFunction })\n\n const executeFunction = useMutation<ResponseBody, AppwriteException[], Props>({\n mutationKey: Keys.functions().executions().create(),\n mutationFn: async ({\n functionId,\n body = {},\n async = false,\n path = '/',\n method = 'POST',\n headers = {},\n scheduledAt,\n }) => {\n setCurrentFunction(functionId)\n\n const { data } = await graphql.mutation({\n query: createExecution,\n variables: {\n functionId,\n body: JSON.stringify(body),\n async,\n path,\n method,\n headers: JSON.stringify(headers),\n scheduledAt,\n },\n })\n\n const { _id, status, errors, responseBody } = data.functionsCreateExecution ?? {}\n\n if (status === 'failed') {\n throw new Error(errors)\n }\n\n setCurrentExecution(_id ?? null)\n\n if (typeof responseBody === 'string') {\n if (responseBody.trim().startsWith('{') && responseBody.trim().endsWith('}')) {\n try {\n return JSON.parse(responseBody)\n } catch (error) {\n console.error('Failed to parse response body:', error)\n return responseBody\n }\n }\n return responseBody\n }\n },\n })\n\n return {\n executeFunction,\n currentExecution: getExecution,\n }\n}\n\nexport function useSuspenseFunction({\n functionId,\n body = {},\n async = false,\n path = '/',\n method = 'POST',\n headers = {},\n scheduledAt,\n}: Props) {\n const { graphql } = useAppwrite()\n\n const executeFunction = useSuspenseQuery<ResponseBody, AppwriteException[], ResponseBody>({\n queryKey: [...Keys.function(functionId).key(), 'execute', { path, method, body }],\n queryFn: async () => {\n const { data } = await graphql.mutation({\n query: createExecution,\n variables: {\n functionId,\n body: JSON.stringify(body),\n async,\n path,\n method,\n headers: JSON.stringify(headers),\n scheduledAt,\n },\n })\n\n if (data?.functionsCreateExecution?.status === 'failed') {\n throw new Error(data.functionsCreateExecution.errors)\n }\n\n const { responseBody } = data.functionsCreateExecution ?? {}\n\n if (typeof responseBody === 'string') {\n if (responseBody.trim().startsWith('{') && responseBody.trim().endsWith('}')) {\n try {\n return JSON.parse(responseBody)\n } catch (error) {\n console.error('Failed to parse response body:', error)\n return responseBody\n }\n }\n }\n return responseBody\n },\n staleTime: Infinity,\n })\n\n return {\n executeFunction,\n }\n}\n","import type { ResultOf, VariablesOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst getExecution = gql(/* GraphQL */ `\n query GetExecution($functionId: String!, $executionId: String!) {\n functionsGetExecution(functionId: $functionId, executionId: $executionId) {\n _id\n _createdAt\n _updatedAt\n functionId\n trigger\n status\n requestMethod\n requestPath\n responseStatusCode\n responseBody\n errors\n duration\n }\n }\n`)\n\ntype Variables = VariablesOf<typeof getExecution>\ntype Result = ResultOf<typeof getExecution>['functionsGetExecution']\n\nexport function useGetExecution({ functionId, executionId }: Variables, opts: QueryOptions = {}) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: Keys.function(functionId).execution(executionId).key(),\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: getExecution,\n variables: { functionId, executionId },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.functionsGetExecution\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n","import type { ResultOf } from 'gql.tada'\nimport { graphql as gql } from 'gql.tada'\n\nimport { Keys } from '../query/Keys'\nimport type { AppwriteException, QueryOptions } from '../types'\nimport { useAppwrite } from '../useAppwrite'\nimport { useQuery } from '../useQuery'\n\nconst listExecutions = gql(/* GraphQL */ `\n query ListExecutions($functionId: String!, $queries: [String!]) {\n functionsListExecutions(functionId: $functionId, queries: $queries) {\n total\n executions {\n _id\n _createdAt\n _updatedAt\n functionId\n trigger\n status\n requestMethod\n requestPath\n responseStatusCode\n responseBody\n errors\n duration\n }\n }\n }\n`)\n\ntype Result = ResultOf<typeof listExecutions>['functionsListExecutions']\n\nexport function useListExecutions(\n {\n functionId,\n queries,\n }: {\n functionId: string\n queries?: string[]\n },\n opts: QueryOptions = {},\n) {\n const { graphql } = useAppwrite()\n\n const queryResult = useQuery<Result, AppwriteException[], Result>({\n queryKey: [...Keys.function(functionId).executions().key(), ...(queries ?? [])],\n queryFn: async () => {\n const { data, errors } = await graphql.query({\n query: listExecutions,\n variables: {\n functionId,\n queries,\n },\n })\n\n if (errors) {\n throw errors\n }\n\n return data.functionsListExecutions\n },\n ...opts,\n })\n\n return { ...queryResult }\n}\n"]}
|