{"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  console.log(`createOfflineAction 2`, options)\n\n  return (variables: T): Transaction => {\n    const offlineTransaction = new OfflineTransaction(\n      {\n        mutationFnName,\n        autoCommit: false,\n      },\n      mutationFn,\n      persistTransaction,\n      executor,\n    )\n\n    const transaction = offlineTransaction.mutate(() => {\n      console.log(`mutate`)\n      const maybePromise = onMutate(variables) as unknown\n\n      if (isPromiseLike(maybePromise)) {\n        throw new OnMutateMustBeSynchronousError()\n      }\n    })\n\n    // Immediately commit\n    const commitPromise = (async () => {\n      try {\n        await transaction.commit()\n        console.log(`offlineAction committed - success`)\n      } catch {\n        console.log(`offlineAction commit failed - error`)\n      }\n    })()\n\n    // Don't await - this is fire-and-forget for optimistic actions\n    // But catch to prevent unhandled rejection\n    commitPromise.catch(() => {\n      // Already handled in try/catch above\n    })\n\n    return transaction\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;AACrC,UAAQ,IAAI,yBAAyB,OAAO;AAE5C,SAAO,CAAC,cAA8B;AACpC,UAAM,qBAAqB,IAAIA,mBAAAA;AAAAA,MAC7B;AAAA,QACE;AAAA,QACA,YAAY;AAAA,MAAA;AAAA,MAEd;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,UAAM,cAAc,mBAAmB,OAAO,MAAM;AAClD,cAAQ,IAAI,QAAQ;AACpB,YAAM,eAAe,SAAS,SAAS;AAEvC,UAAI,cAAc,YAAY,GAAG;AAC/B,cAAM,IAAIC,GAAAA,+BAAA;AAAA,MACZ;AAAA,IACF,CAAC;AAGD,UAAM,iBAAiB,YAAY;AACjC,UAAI;AACF,cAAM,YAAY,OAAA;AAClB,gBAAQ,IAAI,mCAAmC;AAAA,MACjD,QAAQ;AACN,gBAAQ,IAAI,qCAAqC;AAAA,MACnD;AAAA,IACF,GAAA;AAIA,kBAAc,MAAM,MAAM;AAAA,IAE1B,CAAC;AAED,WAAO;AAAA,EACT;AACF;;"}