@tanstack/offline-transactions
Version:
Offline-first transaction capabilities for TanStack DB
43 lines (42 loc) • 1.4 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const db = require("@tanstack/db");
const OfflineTransaction = require("./OfflineTransaction.cjs");
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;
console.log(`createOfflineAction 2`, options);
return (variables) => {
const offlineTransaction = new OfflineTransaction.OfflineTransaction(
{
mutationFnName,
autoCommit: false
},
mutationFn,
persistTransaction,
executor
);
const transaction = offlineTransaction.mutate(() => {
console.log(`mutate`);
const maybePromise = onMutate(variables);
if (isPromiseLike(maybePromise)) {
throw new db.OnMutateMustBeSynchronousError();
}
});
const commitPromise = (async () => {
try {
await transaction.commit();
console.log(`offlineAction committed - success`);
} catch {
console.log(`offlineAction commit failed - error`);
}
})();
commitPromise.catch(() => {
});
return transaction;
};
}
exports.createOfflineAction = createOfflineAction;
//# sourceMappingURL=OfflineAction.cjs.map