@tanstack/offline-transactions
Version:
Offline-first transaction capabilities for TanStack DB
1 lines • 2.08 kB
Source Map (JSON)
{"version":3,"file":"OfflineAction.cjs","sources":["../../../src/api/OfflineAction.ts"],"sourcesContent":["import { OnMutateMustBeSynchronousError } from '@tanstack/db'\nimport { OfflineTransaction } from './OfflineTransaction'\nimport type { Transaction } from '@tanstack/db'\nimport type {\n CreateOfflineActionOptions,\n OfflineMutationFn,\n OfflineTransaction as OfflineTransactionType,\n} from '../types'\n\nfunction isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n return (\n !!value &&\n (typeof value === `object` || typeof value === `function`) &&\n typeof (value as { then?: unknown }).then === `function`\n )\n}\n\nexport function createOfflineAction<T>(\n options: CreateOfflineActionOptions<T>,\n mutationFn: OfflineMutationFn,\n persistTransaction: (tx: OfflineTransactionType) => Promise<void>,\n executor: any,\n): (variables: T) => Transaction {\n const { mutationFnName, onMutate } = options\n\n return (variables: T): Transaction => {\n const offlineTransaction = new OfflineTransaction(\n {\n mutationFnName,\n // The transaction commits after onMutate and reports a failure\n // through `when('settled')`.\n autoCommit: true,\n },\n mutationFn,\n persistTransaction,\n executor,\n )\n\n return offlineTransaction.mutate(() => {\n const maybePromise = onMutate(variables) as unknown\n\n if (isPromiseLike(maybePromise)) {\n throw new OnMutateMustBeSynchronousError()\n }\n })\n }\n}\n"],"names":["OfflineTransaction","OnMutateMustBeSynchronousError"],"mappings":";;;;AASA,SAAS,cAAc,OAA+C;AACpE,SACE,CAAC,CAAC,UACD,OAAO,UAAU,YAAY,OAAO,UAAU,eAC/C,OAAQ,MAA6B,SAAS;AAElD;AAEO,SAAS,oBACd,SACA,YACA,oBACA,UAC+B;AAC/B,QAAM,EAAE,gBAAgB,SAAA,IAAa;AAErC,SAAO,CAAC,cAA8B;AACpC,UAAM,qBAAqB,IAAIA,mBAAAA;AAAAA,MAC7B;AAAA,QACE;AAAA;AAAA;AAAA,QAGA,YAAY;AAAA,MAAA;AAAA,MAEd;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,WAAO,mBAAmB,OAAO,MAAM;AACrC,YAAM,eAAe,SAAS,SAAS;AAEvC,UAAI,cAAc,YAAY,GAAG;AAC/B,cAAM,IAAIC,GAAAA,+BAAA;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,EACH;AACF;;"}