{"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;;"}