{"version":3,"file":"status.mjs","sources":["../../../../../src/lib/status.ts"],"sourcesContent":["/** Adapted from {@link https://github.com/effector/patronum/blob/main/src/status/index.ts} */\nimport { type Effect, type Store, type StoreWritable, createStore } from \"effector\"\n\nexport type OperationStatus = \"initial\" | \"pending\" | \"done\" | \"fail\"\n\nexport function status<Params, Done, Fail = Error>(\n  effect: Effect<Params, Done, Fail>,\n  config: { name: string; sid: string },\n): StoreWritable<OperationStatus> {\n  const $status = createStore<OperationStatus>(\"initial\", config)\n\n  $status\n    .on(effect, () => \"pending\")\n    .on(effect.done, () => \"done\")\n    .on(effect.fail, () => \"fail\")\n\n  return $status\n}\n\nexport interface ViewStatus {\n  /** Has this operation ever fetched? */\n  $idle: Store<boolean>\n  /** Is this operation fetching right now? */\n  $pending: Store<boolean>\n  /** Has fetching this operation failed? */\n  $failed: Store<boolean>\n  /** Has fetching this operation succeeded? */\n  $succeeded: Store<boolean>\n  /** Has fetching this operation finished? */\n  $finished: Store<boolean>\n}\n\nexport function viewStatus($status: Store<OperationStatus>): ViewStatus {\n  return {\n    $idle: $status.map((status) => status === \"initial\"),\n    $pending: $status.map((status) => status === \"pending\"),\n    $failed: $status.map((status) => status === \"fail\"),\n    $succeeded: $status.map((status) => status === \"done\"),\n    $finished: $status.map((status) => [\"fail\", \"done\"].includes(status)),\n  }\n}\n"],"names":["status"],"mappings":";AAKgB,SAAA,OACd,QACA,QACgC;AAC1B,QAAA,UAAU,YAA6B,WAAW,MAAM;AAE9D,UACG,GAAG,QAAQ,MAAM,SAAS,EAC1B,GAAG,OAAO,MAAM,MAAM,MAAM,EAC5B,GAAG,OAAO,MAAM,MAAM,MAAM;AAExB,SAAA;AACT;AAeO,SAAS,WAAW,SAA6C;AAC/D,SAAA;AAAA,IACL,OAAO,QAAQ,IAAI,CAACA,YAAWA,YAAW,SAAS;AAAA,IACnD,UAAU,QAAQ,IAAI,CAACA,YAAWA,YAAW,SAAS;AAAA,IACtD,SAAS,QAAQ,IAAI,CAACA,YAAWA,YAAW,MAAM;AAAA,IAClD,YAAY,QAAQ,IAAI,CAACA,YAAWA,YAAW,MAAM;AAAA,IACrD,WAAW,QAAQ,IAAI,CAACA,YAAW,CAAC,QAAQ,MAAM,EAAE,SAASA,OAAM,CAAC;AAAA,EACtE;AACF;"}