UNPKG

@tanstack/offline-transactions

Version:

Offline-first transaction capabilities for TanStack DB

32 lines (31 loc) • 1.01 kB
import { OnMutateMustBeSynchronousError } from "@tanstack/db"; import { OfflineTransaction } from "./OfflineTransaction.js"; function isPromiseLike(value) { return !!value && (typeof value === `object` || typeof value === `function`) && typeof value.then === `function`; } function createOfflineAction(options, mutationFn, persistTransaction, executor) { const { mutationFnName, onMutate } = options; return (variables) => { const offlineTransaction = new OfflineTransaction( { mutationFnName, // The transaction commits after onMutate and reports a failure // through `when('settled')`. autoCommit: true }, mutationFn, persistTransaction, executor ); return offlineTransaction.mutate(() => { const maybePromise = onMutate(variables); if (isPromiseLike(maybePromise)) { throw new OnMutateMustBeSynchronousError(); } }); }; } export { createOfflineAction }; //# sourceMappingURL=OfflineAction.js.map