{"version":3,"file":"helper.cjs","sources":["../../../../../../src/mods/queries/simple/helper.ts"],"sourcesContent":["import { core } from \"mods/core/core.js\";\nimport { FetcherfulQuerySettings } from \"mods/types/settings.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater } from \"mods/types/updater.js\";\n\nexport namespace Simple {\n\n  export function getCacheKey<K>(key: K) {\n    if (typeof key === \"string\")\n      return key\n    return JSON.stringify(key)\n  }\n\n  export async function fetchOrThrow<K, D, F>(\n    cacheKey: string,\n    signal: AbortSignal,\n    settings: FetcherfulQuerySettings<K, D, F>\n  ): Promise<State<D, F>> {\n    const fetched = await settings.fetcher(settings.key, { signal })\n\n    return await core.replaceOrThrow(cacheKey, fetched, settings)\n  }\n\n  /**\n   * Optimistic update\n   * @param core \n   * @param key \n   * @param cacheKey \n   * @param fetcher \n   * @param updater \n   * @param settings \n   * @returns \n   */\n  export async function updateOrThrow<K, D, F>(\n    cacheKey: string,\n    updater: Updater<K, D, F>,\n    signal: AbortSignal,\n    settings: FetcherfulQuerySettings<K, D, F>\n  ): Promise<State<D, F>> {\n    const uuid = crypto.randomUUID()\n\n    try {\n      const generator = updater()\n\n      let next = await generator.next()\n\n      for (; !next.done; next = await generator.next())\n        await core.optimizeOrThrow(cacheKey, uuid, next.value, settings)\n\n      const fetcher = next.value ?? settings.fetcher\n      const fetched = await fetcher(settings.key, { signal, cache: \"reload\" })\n\n      core.deoptimize(cacheKey, uuid)\n\n      return await core.replaceOrThrow(cacheKey, fetched, settings)\n    } catch (e: unknown) {\n      core.deoptimize(cacheKey, uuid)\n      core.reoptimizeOrThrow(cacheKey, settings)\n      throw e\n    }\n  }\n}"],"names":["Simple","core"],"mappings":";;;;AAKiBA,wBAwDhB;AAxDD,CAAA,UAAiB,MAAM,EAAA;IAErB,SAAgB,WAAW,CAAI,GAAM,EAAA;QACnC,IAAI,OAAO,GAAG,KAAK,QAAQ;AACzB,YAAA,OAAO,GAAG,CAAA;AACZ,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;KAC3B;AAJe,IAAA,MAAA,CAAA,WAAW,cAI1B,CAAA;AAEM,IAAA,eAAe,YAAY,CAChC,QAAgB,EAChB,MAAmB,EACnB,QAA0C,EAAA;AAE1C,QAAA,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QAEhE,OAAO,MAAMC,SAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;KAC9D;AARqB,IAAA,MAAA,CAAA,YAAY,eAQjC,CAAA;AAED;;;;;;;;;AASG;IACI,eAAe,aAAa,CACjC,QAAgB,EAChB,OAAyB,EACzB,MAAmB,EACnB,QAA0C,EAAA;AAE1C,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;AAEhC,QAAA,IAAI;AACF,YAAA,MAAM,SAAS,GAAG,OAAO,EAAE,CAAA;AAE3B,YAAA,IAAI,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;YAEjC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE;AAC9C,gBAAA,MAAMA,SAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YAElE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAA;AAC9C,YAAA,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;AAExE,YAAAA,SAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;YAE/B,OAAO,MAAMA,SAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;SAC9D;QAAC,OAAO,CAAU,EAAE;AACnB,YAAAA,SAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAC/B,YAAAA,SAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAC1C,YAAA,MAAM,CAAC,CAAA;SACR;KACF;AA3BqB,IAAA,MAAA,CAAA,aAAa,gBA2BlC,CAAA;AACH,CAAC,EAxDgBD,cAAM,KAANA,cAAM,GAwDtB,EAAA,CAAA,CAAA;;"}