@tanstack/react-query
Version:
Hooks for managing, caching and syncing asynchronous and remote data in React
1 lines • 5.2 kB
Source Map (JSON)
{"version":3,"file":"useMutation.mjs","sources":["../../src/useMutation.ts"],"sourcesContent":["import * as React from 'react'\nimport { useSyncExternalStore } from './useSyncExternalStore'\n\nimport type { MutationFunction, MutationKey } from '@tanstack/query-core'\nimport {\n notifyManager,\n parseMutationArgs,\n MutationObserver,\n} from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport type {\n UseMutateFunction,\n UseMutationOptions,\n UseMutationResult,\n} from './types'\nimport { shouldThrowError } from './utils'\n\n// HOOK\n\nexport function useMutation<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n>(\n options: UseMutationOptions<TData, TError, TVariables, TContext>,\n): UseMutationResult<TData, TError, TVariables, TContext>\nexport function useMutation<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n>(\n mutationFn: MutationFunction<TData, TVariables>,\n options?: Omit<\n UseMutationOptions<TData, TError, TVariables, TContext>,\n 'mutationFn'\n >,\n): UseMutationResult<TData, TError, TVariables, TContext>\nexport function useMutation<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n>(\n mutationKey: MutationKey,\n options?: Omit<\n UseMutationOptions<TData, TError, TVariables, TContext>,\n 'mutationKey'\n >,\n): UseMutationResult<TData, TError, TVariables, TContext>\nexport function useMutation<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n>(\n mutationKey: MutationKey,\n mutationFn?: MutationFunction<TData, TVariables>,\n options?: Omit<\n UseMutationOptions<TData, TError, TVariables, TContext>,\n 'mutationKey' | 'mutationFn'\n >,\n): UseMutationResult<TData, TError, TVariables, TContext>\nexport function useMutation<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n>(\n arg1:\n | MutationKey\n | MutationFunction<TData, TVariables>\n | UseMutationOptions<TData, TError, TVariables, TContext>,\n arg2?:\n | MutationFunction<TData, TVariables>\n | UseMutationOptions<TData, TError, TVariables, TContext>,\n arg3?: UseMutationOptions<TData, TError, TVariables, TContext>,\n): UseMutationResult<TData, TError, TVariables, TContext> {\n const options = parseMutationArgs(arg1, arg2, arg3)\n const queryClient = useQueryClient({ context: options.context })\n\n const [observer] = React.useState(\n () =>\n new MutationObserver<TData, TError, TVariables, TContext>(\n queryClient,\n options,\n ),\n )\n\n React.useEffect(() => {\n observer.setOptions(options)\n }, [observer, options])\n\n const result = useSyncExternalStore(\n React.useCallback(\n (onStoreChange) =>\n observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer],\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult(),\n )\n\n const mutate = React.useCallback<\n UseMutateFunction<TData, TError, TVariables, TContext>\n >(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop)\n },\n [observer],\n )\n\n if (\n result.error &&\n shouldThrowError(observer.options.useErrorBoundary, [result.error])\n ) {\n throw result.error\n }\n\n return { ...result, mutate, mutateAsync: result.mutate }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n"],"names":["useMutation","arg1","arg2","arg3","options","parseMutationArgs","queryClient","useQueryClient","context","observer","React","useState","MutationObserver","useEffect","setOptions","result","useSyncExternalStore","useCallback","onStoreChange","subscribe","notifyManager","batchCalls","getCurrentResult","mutate","variables","mutateOptions","catch","noop","error","shouldThrowError","useErrorBoundary","mutateAsync"],"mappings":";;;;;;AAgEO,SAASA,WAAT,CAMLC,IANK,EAULC,IAVK,EAaLC,IAbK,EAcmD;EACxD,MAAMC,OAAO,GAAGC,iBAAiB,CAACJ,IAAD,EAAOC,IAAP,EAAaC,IAAb,CAAjC,CAAA;EACA,MAAMG,WAAW,GAAGC,cAAc,CAAC;IAAEC,OAAO,EAAEJ,OAAO,CAACI,OAAAA;AAAnB,GAAD,CAAlC,CAAA;AAEA,EAAA,MAAM,CAACC,QAAD,CAAaC,GAAAA,KAAK,CAACC,QAAN,CACjB,MACE,IAAIC,gBAAJ,CACEN,WADF,EAEEF,OAFF,CAFe,CAAnB,CAAA;EAQAM,KAAK,CAACG,SAAN,CAAgB,MAAM;IACpBJ,QAAQ,CAACK,UAAT,CAAoBV,OAApB,CAAA,CAAA;AACD,GAFD,EAEG,CAACK,QAAD,EAAWL,OAAX,CAFH,CAAA,CAAA;AAIA,EAAA,MAAMW,MAAM,GAAGC,oBAAoB,CACjCN,KAAK,CAACO,WAAN,CACGC,aAAD,IACET,QAAQ,CAACU,SAAT,CAAmBC,aAAa,CAACC,UAAd,CAAyBH,aAAzB,CAAnB,CAFJ,EAGE,CAACT,QAAD,CAHF,CADiC,EAMjC,MAAMA,QAAQ,CAACa,gBAAT,EAN2B,EAOjC,MAAMb,QAAQ,CAACa,gBAAT,EAP2B,CAAnC,CAAA;EAUA,MAAMC,MAAM,GAAGb,KAAK,CAACO,WAAN,CAGb,CAACO,SAAD,EAAYC,aAAZ,KAA8B;IAC5BhB,QAAQ,CAACc,MAAT,CAAgBC,SAAhB,EAA2BC,aAA3B,CAAA,CAA0CC,KAA1C,CAAgDC,IAAhD,CAAA,CAAA;AACD,GALY,EAMb,CAAClB,QAAD,CANa,CAAf,CAAA;;AASA,EAAA,IACEM,MAAM,CAACa,KAAP,IACAC,gBAAgB,CAACpB,QAAQ,CAACL,OAAT,CAAiB0B,gBAAlB,EAAoC,CAACf,MAAM,CAACa,KAAR,CAApC,CAFlB,EAGE;IACA,MAAMb,MAAM,CAACa,KAAb,CAAA;AACD,GAAA;;EAED,OAAO,EAAE,GAAGb,MAAL;IAAaQ,MAAb;IAAqBQ,WAAW,EAAEhB,MAAM,CAACQ,MAAAA;GAAhD,CAAA;AACD;;AAGD,SAASI,IAAT,GAAgB;;;;"}