{"version":3,"sources":["../src/cache-core.ts","../src/encode-core.ts","../src/request-core.ts","../src/index.ts"],"sourcesContent":["/* istanbul ignore file */\r\n\r\nimport { clear, createStore, del, get, set, UseStore } from \"idb-keyval\";\r\n\r\nimport { EncodeCore, EncodeCoreConfig } from \"./encode-core\";\r\n\r\nexport class CacheCore<\r\n  CacheDataType,\r\n  EncodeDataType extends any[]\r\n> extends EncodeCore<EncodeDataType> {\r\n  protected readonly _cacheStore: UseStore | undefined;\r\n\r\n  constructor(protected _cacheConfig: CacheCoreConfig) {\r\n    super({ getParamsString: _cacheConfig.getParamsString });\r\n\r\n    try {\r\n      this._cacheStore = this._cacheConfig?.enableCache\r\n        ? createStore(\r\n            this._cacheConfig?.cacheId ?? \"db-default\",\r\n            \"store-default\"\r\n          )\r\n        : undefined;\r\n    } catch (error) {\r\n      // console.error(error);\r\n    }\r\n  }\r\n\r\n  async _getCache(\r\n    cacheKey: string\r\n  ): Promise<TypeCacheRecord<CacheDataType> | undefined> {\r\n    if (!this._cacheConfig.enableCache || !this._cacheStore) return undefined;\r\n\r\n    const cache: TypeCacheRecord<CacheDataType> | undefined = await get(\r\n      cacheKey,\r\n      this._cacheStore\r\n    );\r\n\r\n    return this._isCacheExpired(cache) ? undefined : cache;\r\n  }\r\n\r\n  async _setCache(cacheKey: string, value: TypeCacheRecord<CacheDataType>) {\r\n    if (!this._cacheConfig.enableCache || !this._cacheStore) return;\r\n\r\n    try {\r\n      await set(cacheKey, value, this._cacheStore);\r\n    } catch (error) {\r\n      console.error(error);\r\n    }\r\n  }\r\n\r\n  /* istanbul ignore next */\r\n  public async deleteCache(cacheKey: string) {\r\n    if (this._cacheStore) del(cacheKey, this._cacheStore);\r\n  }\r\n\r\n  /* istanbul ignore next */\r\n  public async clearCache() {\r\n    if (this._cacheStore) clear(this._cacheStore);\r\n  }\r\n\r\n  protected _isCacheExpired(cache: TypeCacheRecord<CacheDataType> | undefined) {\r\n    return (\r\n      !!cache &&\r\n      !!this._cacheConfig.cacheExpiry &&\r\n      this._cacheConfig.cacheExpiry > 0 &&\r\n      Date.now() - cache.updatedAt > this._cacheConfig.cacheExpiry\r\n    );\r\n  }\r\n\r\n  // protected _isCachePreventNewRequest(\r\n  //   cache: TypeCacheRecord<CacheDataType> | undefined\r\n  // ) {\r\n  //   return (\r\n  //     !!cache &&\r\n  //     !!this._cacheConfig.cachePreventNewRequestDuration &&\r\n  //     this._cacheConfig.cachePreventNewRequestDuration > 0 &&\r\n  //     Date.now() - cache.updatedAt < this._cacheConfig.cachePreventNewRequestDuration\r\n  //   );\r\n  // }\r\n}\r\n\r\nexport type TypeCacheRecord<T> = {\r\n  data: T;\r\n  updatedAt: number;\r\n};\r\n\r\nexport type CacheCoreConfig = {\r\n  enableCache?: boolean;\r\n  cacheExpiry?: number;\r\n  cacheId?: string;\r\n\r\n  // cachePreventNewRequestDuration?: number;\r\n} & EncodeCoreConfig<any[]>;\r\n","import MD5 from \"crypto-js/md5.js\";\r\n\r\nexport class EncodeCore<EncodeDataType extends any[]> {\r\n  constructor(protected _encodeConfig: EncodeCoreConfig<EncodeDataType>) {}\r\n\r\n  protected _getHash(parameters: EncodeDataType) {\r\n    const length = parameters.length;\r\n\r\n    return MD5(\r\n      this._encodeConfig.getParamsString\r\n        ? this._encodeConfig.getParamsString(...parameters)\r\n        : length === 0\r\n        ? \"default\"\r\n        : length === 1 && typeof parameters[0] === \"object\"\r\n        ? EncodeCore.getObjectUniqueString(parameters[0])\r\n        : JSON.stringify(parameters)\r\n    ).toString();\r\n  }\r\n\r\n  static getObjectUniqueString(object: Record<string, any>) {\r\n    return JSON.stringify(\r\n      Object.entries(object).sort(([key1], [key2]) => key1.localeCompare(key2))\r\n    );\r\n  }\r\n}\r\n\r\nexport type EncodeCoreConfig<EncodeDataType extends any[]> = {\r\n  getParamsString?: (...params: EncodeDataType) => string;\r\n};\r\n","import { CacheCore, CacheCoreConfig, TypeCacheRecord } from \"./cache-core\";\r\n\r\nexport class RequestCore<\r\n  Task extends (...args: any) => Promise<any>,\r\n  TaskError = any,\r\n  Meta = Record<string, any>\r\n> extends CacheCore<\r\n  Awaited<ReturnType<Task>> | undefined | null,\r\n  Parameters<Task>\r\n> {\r\n  constructor(protected _config: TaskManagerCoreConfig<Task, TaskError, Meta>) {\r\n    super(_config.cache ?? {});\r\n  }\r\n\r\n  protected _retriedOnError: number = 0;\r\n\r\n  protected _defaultRequestDetails: RequestDataRecordType<Task> = {};\r\n\r\n  protected _requestDetails: RequestDataRecordType<Task> =\r\n    this._defaultRequestDetails;\r\n\r\n  public get requestDetails(): Readonly<{\r\n    value: RequestDataRecordType<Task>;\r\n  }> {\r\n    return { value: this._requestDetails };\r\n  }\r\n\r\n  public get meta() {\r\n    return (this._config.meta ?? {}) as Meta;\r\n  }\r\n\r\n  protected _setRequestDetails(\r\n    updater: (prev: RequestDataRecordType<Task>) => RequestDataRecordType<Task>\r\n  ) {\r\n    this._requestDetails = updater(this.requestDetails.value);\r\n  }\r\n\r\n  protected _isPrevented({\r\n    hash,\r\n    config: { isInvalidate = false, isPreProcess = false },\r\n  }: {\r\n    hash: string;\r\n    config: RequestConfigBase<Task, TaskError, Meta>;\r\n  }) {\r\n    const requestDetails = this.requestDetails.value ?? {};\r\n    const preventDuration = this._config.preventNewRequestDuration ?? 0;\r\n\r\n    const isBlocked = Boolean(\r\n      !isInvalidate &&\r\n        requestDetails.createdAt &&\r\n        !requestDetails.isFailed &&\r\n        !requestDetails.isBlocked &&\r\n        preventDuration > 0 &&\r\n        this._isSameRequest(hash) &&\r\n        Date.now() - requestDetails.createdAt <= preventDuration\r\n    );\r\n\r\n    if (isBlocked && !isInvalidate && !isPreProcess) {\r\n      this._setRequestDetails((prev) => ({\r\n        ...prev,\r\n        isBlocked: true,\r\n        status: \"blocked\",\r\n        procedure: (prev.procedure ?? []).concat(\"blocked\"),\r\n      }));\r\n    }\r\n\r\n    return isBlocked;\r\n  }\r\n\r\n  protected async _requestCore({\r\n    parameters,\r\n    config,\r\n  }: {\r\n    parameters: Parameters<Task>;\r\n    config: RequestConfigBase<Task, TaskError, Meta>;\r\n  }): Promise<\r\n    {\r\n      data?: Awaited<ReturnType<Task>> | undefined | null;\r\n      error?: TaskError;\r\n      isError?: boolean;\r\n      createdAt: number;\r\n      updatedAt: number;\r\n      hash: string;\r\n      parameters: Parameters<Task>;\r\n      meta: Meta;\r\n      isPrevented?: boolean;\r\n    } & SharedConfigs\r\n  > {\r\n    const createdAt = Date.now();\r\n    const meta = this.meta;\r\n    const isPreProcess = config.isPreProcess;\r\n    const isInvalidate = config.isInvalidate;\r\n\r\n    const hash = this._getHash(parameters as any);\r\n\r\n    if (this._isPrevented({ hash, config }))\r\n      return {\r\n        createdAt,\r\n        updatedAt: createdAt,\r\n        hash,\r\n        parameters,\r\n        meta,\r\n        isPrevented: true,\r\n        isPreProcess,\r\n        isInvalidate,\r\n      };\r\n\r\n    if (!config.isPreProcess && !config.isInvalidate)\r\n      this._setRequestDetails(() => ({\r\n        parameters,\r\n        hash,\r\n        createdAt,\r\n        updatedAt: createdAt,\r\n        isRequested: true,\r\n        status: \"requested\",\r\n        procedure: [\"requested\"],\r\n      }));\r\n\r\n    let data: Awaited<ReturnType<Task>> | undefined | null = null;\r\n    let error: any;\r\n    let isError: boolean | undefined;\r\n    let isPrevented = false;\r\n\r\n    try {\r\n      const result = await this._try({\r\n        parameters,\r\n        config,\r\n        hash,\r\n      });\r\n\r\n      data = result.data;\r\n      if (result.isPrevented) isPrevented = true;\r\n    } catch (currentError: any) {\r\n      error = await this._error({\r\n        parameters,\r\n        config,\r\n        hash,\r\n        error: currentError,\r\n      });\r\n    } finally {\r\n      if (isPrevented)\r\n        return {\r\n          createdAt,\r\n          updatedAt: Date.now(),\r\n          parameters,\r\n          hash,\r\n          error,\r\n          data,\r\n          meta,\r\n          isPrevented,\r\n          isInvalidate,\r\n          isPreProcess,\r\n          isError,\r\n        };\r\n\r\n      await this._finally({\r\n        parameters,\r\n        config,\r\n        hash,\r\n        error,\r\n        data,\r\n      });\r\n    }\r\n\r\n    return {\r\n      createdAt,\r\n      updatedAt: Date.now(),\r\n      parameters,\r\n      hash,\r\n      error,\r\n      data,\r\n      meta,\r\n      isPrevented,\r\n      isInvalidate,\r\n      isPreProcess,\r\n      isError,\r\n    };\r\n  }\r\n\r\n  private async _try({\r\n    parameters: parametersRaw,\r\n    config,\r\n    hash,\r\n  }: {\r\n    parameters: Parameters<Task>;\r\n    config: RequestConfigBase<Task, TaskError, Meta>;\r\n    hash: string;\r\n  }): Promise<{\r\n    data: Awaited<ReturnType<Task>> | undefined | null;\r\n    isPrevented?: boolean;\r\n  }> {\r\n    const meta = this.meta;\r\n\r\n    let data: Awaited<ReturnType<Task>> | undefined | null = null;\r\n\r\n    const { onRequest, onSuccess, onCache, isInvalidate, isPreProcess } =\r\n      config;\r\n\r\n    if (this._config.cache?.enableCache)\r\n      this._getCache(hash).then(async (cacheRaw) => {\r\n        const { cache, isIgnored = false } =\r\n          (await this._config.interceptors?.cache?.(\r\n            {\r\n              cache: cacheRaw,\r\n              hash,\r\n              parameters: [...parametersRaw] as Parameters<Task>,\r\n              config,\r\n              meta,\r\n              isInvalidate,\r\n              isPreProcess,\r\n            },\r\n            this\r\n          )) ?? { cache: cacheRaw };\r\n\r\n        if (isIgnored) return;\r\n\r\n        let isSameRequest = this._isSameRequest(hash);\r\n\r\n        if (isSameRequest && !!this.requestDetails.value?.isSucceed) return;\r\n\r\n        if (isSameRequest || isInvalidate || isPreProcess)\r\n          await onCache?.(\r\n            {\r\n              cache,\r\n              isInvalidate,\r\n              isPreProcess,\r\n              hash,\r\n              parameters: parametersRaw,\r\n              meta,\r\n            },\r\n            this\r\n          );\r\n\r\n        if (isSameRequest && !isPreProcess && !isInvalidate)\r\n          await this._config.defaultEventHandlers?.onCache?.(\r\n            {\r\n              cache,\r\n              isInvalidate,\r\n              isPreProcess,\r\n              hash,\r\n              parameters: [...parametersRaw] as Parameters<Task>,\r\n              meta,\r\n            },\r\n            this\r\n          );\r\n\r\n        if (isSameRequest && !isPreProcess && !isInvalidate)\r\n          this._setRequestDetails((prev) => ({\r\n            ...prev,\r\n            isCached: true,\r\n            status: \"cached\",\r\n            updatedAt: Date.now(),\r\n            procedure: (prev.procedure ?? []).concat(\"cached\"),\r\n            cache,\r\n          }));\r\n      });\r\n\r\n    const { parameters, isPrevented = false } =\r\n      (await this._config.interceptors?.request?.(\r\n        {\r\n          parameters: [...parametersRaw] as Parameters<Task>,\r\n          config,\r\n          hash,\r\n          meta,\r\n          isInvalidate,\r\n          isPreProcess,\r\n        },\r\n        this\r\n      )) ?? { parameters: parametersRaw };\r\n\r\n    let isSameRequest = this._isSameRequest(hash);\r\n\r\n    if (isSameRequest && isPrevented && !isInvalidate && !isPreProcess) {\r\n      this._setRequestDetails((prev) => ({\r\n        ...prev,\r\n        isBlocked: true,\r\n        status: \"blocked\",\r\n        updatedAt: Date.now(),\r\n        procedure: (prev.procedure ?? []).concat(\"blocked\"),\r\n      }));\r\n\r\n      return { data, isPrevented: true };\r\n    }\r\n\r\n    if (isSameRequest || isInvalidate || isPreProcess)\r\n      await onRequest?.(\r\n        {\r\n          parameters: [...parametersRaw] as Parameters<Task>,\r\n          hash,\r\n          isInvalidate,\r\n          isPreProcess,\r\n          meta,\r\n        },\r\n        this\r\n      );\r\n    if ((isSameRequest && !isPreProcess) || isInvalidate)\r\n      await this._config.defaultEventHandlers?.onRequest?.(\r\n        {\r\n          parameters: [...parametersRaw] as Parameters<Task>,\r\n          hash,\r\n          isInvalidate,\r\n          isPreProcess,\r\n          meta,\r\n        },\r\n        this\r\n      );\r\n\r\n    isSameRequest = this._isSameRequest(hash);\r\n\r\n    // const isCachePreventedRequest = this._isCachePreventNewRequest(cache);\r\n\r\n    // data =\r\n    //   isCachePreventedRequest && !isInvalidate\r\n    //     ? cache?.data\r\n    //     : await this._config.handler(parameters as any);\r\n\r\n    // if (!isCachePreventedRequest || isInvalidate)\r\n    //   this._setCache(paramsHash, { data, updatedAt: Date.now() });\r\n    if (isSameRequest && !isInvalidate && !isPreProcess)\r\n      this._setRequestDetails((prev) => ({\r\n        ...prev,\r\n        isRequested: true,\r\n        status: \"began\",\r\n        updatedAt: Date.now(),\r\n        procedure: (prev.procedure ?? []).concat(\"began\"),\r\n      }));\r\n\r\n    data = await this._config.handler(...(parameters ?? []));\r\n\r\n    this._setCache(hash, { data: data ?? undefined, updatedAt: Date.now() });\r\n\r\n    isSameRequest = this._isSameRequest(hash);\r\n\r\n    if (isSameRequest) this._retriedOnError = 0;\r\n\r\n    if (isSameRequest && !isInvalidate && !isPreProcess)\r\n      this._setRequestDetails((prev) => ({\r\n        ...prev,\r\n        isSucceed: true,\r\n        status: \"succeed\",\r\n        updatedAt: Date.now(),\r\n        procedure: (prev.procedure ?? []).concat(\"succeed\"),\r\n        data,\r\n      }));\r\n\r\n    const { data: interceptedData, isIgnored = false } =\r\n      (await this._config.interceptors?.success?.(\r\n        {\r\n          parameters: parametersRaw,\r\n          config,\r\n          data,\r\n          hash,\r\n          meta,\r\n          isInvalidate,\r\n          isPreProcess,\r\n        },\r\n        this\r\n      )) ?? { data };\r\n\r\n    if (isIgnored) return { data, isPrevented: true };\r\n\r\n    data = interceptedData;\r\n\r\n    isSameRequest = this._isSameRequest(hash);\r\n\r\n    if (isSameRequest || isInvalidate || isPreProcess)\r\n      await onSuccess?.(\r\n        {\r\n          data,\r\n          hash,\r\n          isInvalidate,\r\n          isPreProcess,\r\n          parameters: [...parametersRaw] as Parameters<Task>,\r\n          meta,\r\n        },\r\n        this\r\n      );\r\n    if ((isSameRequest && !isPreProcess) || isInvalidate)\r\n      await this._config.defaultEventHandlers?.onSuccess?.(\r\n        {\r\n          data,\r\n          hash,\r\n          isInvalidate,\r\n          isPreProcess,\r\n          parameters: [...parametersRaw] as Parameters<Task>,\r\n          meta,\r\n        },\r\n        this\r\n      );\r\n\r\n    return { data };\r\n  }\r\n\r\n  private async _error({\r\n    parameters: parametersRaw,\r\n    config,\r\n    hash,\r\n    error: errorRaw,\r\n  }: {\r\n    parameters: Parameters<Task>;\r\n    config: RequestConfigBase<Task, TaskError, Meta>;\r\n    hash: string;\r\n    error: TaskError;\r\n  }): Promise<TaskError> {\r\n    const meta = this.meta;\r\n\r\n    const parameters = [...parametersRaw] as Parameters<Task>;\r\n\r\n    const { error, isIgnored = false } =\r\n      (await this._config.interceptors?.error?.(\r\n        {\r\n          parameters,\r\n          config,\r\n          error: errorRaw,\r\n          hash,\r\n          meta,\r\n          isInvalidate: config.isInvalidate,\r\n          isPreProcess: config.isPreProcess,\r\n        },\r\n        this\r\n      )) ?? { error: errorRaw };\r\n\r\n    if (isIgnored) return error;\r\n\r\n    let isSameRequest = this._isSameRequest(hash);\r\n\r\n    if (isSameRequest && !config.isInvalidate && !config.isPreProcess)\r\n      this._setRequestDetails((prev) => ({\r\n        ...prev,\r\n        isFailed: true,\r\n        status: \"failed\",\r\n        updatedAt: Date.now(),\r\n        procedure: (prev.procedure ?? []).concat(\"failed\"),\r\n        error,\r\n      }));\r\n\r\n    if (\r\n      this._isRetryOnError &&\r\n      isSameRequest &&\r\n      !config.isInvalidate &&\r\n      !config.isPreProcess\r\n    ) {\r\n      ++this._retriedOnError;\r\n\r\n      this._config.retryOnErrorDelay && this._config.retryOnErrorDelay > 0\r\n        ? setTimeout(() => {\r\n            this._requestCore({\r\n              parameters,\r\n              config,\r\n            });\r\n          }, this._config.retryOnErrorDelay)\r\n        : this._requestCore({\r\n            parameters,\r\n            config,\r\n          });\r\n\r\n      return error;\r\n    }\r\n\r\n    if (isSameRequest || config.isPreProcess || config.isInvalidate)\r\n      await config.onError?.(\r\n        {\r\n          error,\r\n          hash,\r\n          parameters: [...parametersRaw] as Parameters<Task>,\r\n          isInvalidate: config.isInvalidate,\r\n          isPreProcess: config.isPreProcess,\r\n          meta,\r\n        },\r\n        this\r\n      );\r\n    if ((isSameRequest && !config.isPreProcess) || config.isInvalidate)\r\n      await this._config.defaultEventHandlers?.onError?.(\r\n        {\r\n          error,\r\n          hash,\r\n          parameters: [...parametersRaw] as Parameters<Task>,\r\n          isInvalidate: config.isInvalidate,\r\n          isPreProcess: config.isPreProcess,\r\n          meta,\r\n        },\r\n        this\r\n      );\r\n\r\n    return error;\r\n  }\r\n\r\n  private async _finally({\r\n    parameters: parametersRaw,\r\n    config,\r\n    hash,\r\n    error: errorRaw,\r\n    data: dataRaw,\r\n  }: {\r\n    parameters: Parameters<Task>;\r\n    config: RequestConfigBase<Task, TaskError, Meta>;\r\n    hash: string;\r\n    error: TaskError | undefined;\r\n    data: Awaited<ReturnType<Task>> | undefined | null;\r\n  }) {\r\n    const meta = this.meta;\r\n\r\n    const {\r\n      data,\r\n      error,\r\n      isIgnored = false,\r\n    } = (await this._config.interceptors?.finally?.(\r\n      {\r\n        parameters: [...parametersRaw] as Parameters<Task>,\r\n        config,\r\n        data: dataRaw,\r\n        error: errorRaw,\r\n        hash,\r\n        meta,\r\n        isInvalidate: config.isInvalidate,\r\n        isPreProcess: config.isPreProcess,\r\n      },\r\n      this\r\n    )) ?? { data: dataRaw, error: errorRaw };\r\n\r\n    if (isIgnored) return;\r\n\r\n    let isSameRequest = this._isSameRequest(hash);\r\n\r\n    if (isSameRequest || config.isPreProcess || config.isInvalidate)\r\n      await config.onFinally?.(\r\n        {\r\n          data,\r\n          error,\r\n          hash,\r\n          parameters: [...parametersRaw] as Parameters<Task>,\r\n          isInvalidate: config.isInvalidate,\r\n          isPreProcess: config.isPreProcess,\r\n          meta,\r\n        },\r\n        this\r\n      );\r\n    if ((isSameRequest && !config.isPreProcess) || config.isInvalidate)\r\n      await this._config.defaultEventHandlers?.onFinally?.(\r\n        {\r\n          data,\r\n          error,\r\n          hash,\r\n          parameters: [...parametersRaw] as Parameters<Task>,\r\n          isInvalidate: config.isInvalidate,\r\n          isPreProcess: config.isPreProcess,\r\n          meta,\r\n        },\r\n        this\r\n      );\r\n  }\r\n\r\n  protected get _isRetryOnError(): boolean {\r\n    const retryOnError = this._config.retryOnError ?? 0;\r\n\r\n    return retryOnError > 0 && this._retriedOnError < retryOnError;\r\n  }\r\n\r\n  protected _isSameRequest(hash: string) {\r\n    return hash === this.requestDetails.value?.hash;\r\n  }\r\n\r\n  public reset() {\r\n    this._setRequestDetails(() => this._defaultRequestDetails);\r\n    this._retriedOnError = 0;\r\n\r\n    return this;\r\n  }\r\n}\r\n\r\nexport type RequestConfigBase<\r\n  Task extends (...args: any) => Promise<any>,\r\n  TaskError = any,\r\n  Meta = Record<string, any>\r\n> = RequestEventHandlersType<Task, TaskError, Meta> & Partial<SharedConfigs>;\r\n\r\n// export type RequestConfigs<\r\n//   Task extends (...args: any) => Promise<any>,\r\n//   TaskError = any\r\n// > =\r\n//   | ({ isInvalidate?: never } & RequestEventHandlersType<Task, TaskError>)\r\n//   | ({ isInvalidate?: true } & Omit<\r\n//       RequestEventHandlersType<Task, TaskError>,\r\n//       \"onCache\"\r\n//     >);\r\n\r\nexport type RequestConfigs<\r\n  Task extends (...args: any) => Promise<any>,\r\n  TaskError = any,\r\n  Meta = Record<string, any>\r\n> = Partial<SharedConfigs> & RequestEventHandlersType<Task, TaskError, Meta>;\r\n\r\nexport type RequestEventHandlersType<\r\n  Task extends (...args: any) => Promise<any>,\r\n  TaskError = any,\r\n  Meta = Record<string, any>\r\n> = {\r\n  onCache?: (\r\n    params: {\r\n      cache?: TypeCacheRecord<Awaited<ReturnType<Task>> | undefined | null>;\r\n      hash: string;\r\n      parameters: Parameters<Task>;\r\n      meta: Meta;\r\n    } & SharedConfigs,\r\n    instance: RequestCore<Task, TaskError, Meta>\r\n  ) => any;\r\n\r\n  onRequest?: (\r\n    params: {\r\n      parameters: Parameters<Task>;\r\n      hash: string;\r\n      meta: Meta;\r\n    } & SharedConfigs,\r\n    instance: RequestCore<Task, TaskError, Meta>\r\n  ) => any;\r\n\r\n  onSuccess?: (\r\n    params: {\r\n      data: Awaited<ReturnType<Task>> | undefined | null;\r\n      hash: string;\r\n      parameters: Parameters<Task>;\r\n      meta: Meta;\r\n    } & SharedConfigs,\r\n    instance: RequestCore<Task, TaskError, Meta>\r\n  ) => any | Promise<any>;\r\n\r\n  onError?: (\r\n    params: {\r\n      error: TaskError;\r\n      hash: string;\r\n      parameters: Parameters<Task>;\r\n      meta: Meta;\r\n    } & SharedConfigs,\r\n    instance: RequestCore<Task, TaskError, Meta>\r\n  ) => any | Promise<any>;\r\n\r\n  onFinally?: (\r\n    props: {\r\n      data?: Awaited<ReturnType<Task>> | undefined | null;\r\n      error?: TaskError;\r\n      hash: string;\r\n      parameters: Parameters<Task>;\r\n      meta: Meta;\r\n    } & SharedConfigs,\r\n    instance: RequestCore<Task, TaskError, Meta>\r\n  ) => any | Promise<any>;\r\n};\r\n\r\nexport type TaskManagerInterceptorsType<\r\n  Task extends (...args: any) => Promise<any>,\r\n  TaskError = any,\r\n  Meta = Record<string, any>\r\n> = {\r\n  cache?: (\r\n    props: {\r\n      cache:\r\n        | TypeCacheRecord<Awaited<ReturnType<Task>> | undefined | null>\r\n        | undefined;\r\n      hash: string;\r\n      parameters: Parameters<Task>;\r\n      config: RequestConfigBase<Task, TaskError, Meta>;\r\n      meta: Meta;\r\n    } & SharedConfigs,\r\n    instance: RequestCore<Task, TaskError, Meta>\r\n  ) => Promise<{\r\n    isIgnored?: boolean;\r\n    cache:\r\n      | TypeCacheRecord<Awaited<ReturnType<Task>> | undefined | null>\r\n      | undefined;\r\n  }>;\r\n\r\n  request?: (\r\n    props: {\r\n      parameters: Parameters<Task>;\r\n      config: RequestConfigBase<Task, TaskError, Meta>;\r\n      hash: string;\r\n      meta: Meta;\r\n    } & SharedConfigs,\r\n    instance: RequestCore<Task, TaskError, Meta>\r\n  ) => Promise<{\r\n    isPrevented?: boolean;\r\n    parameters: Parameters<Task>;\r\n  }>;\r\n\r\n  success?: (\r\n    props: {\r\n      parameters: Parameters<Task>;\r\n      config: RequestConfigBase<Task, TaskError, Meta>;\r\n      data: Awaited<ReturnType<Task>> | undefined | null;\r\n      hash: string;\r\n      meta: Meta;\r\n    } & SharedConfigs,\r\n    instance: RequestCore<Task, TaskError, Meta>\r\n  ) => Promise<{\r\n    isIgnored?: boolean;\r\n    data: Awaited<ReturnType<Task>> | undefined | null;\r\n  }>;\r\n\r\n  error?: (\r\n    props: {\r\n      parameters: Parameters<Task>;\r\n      config: RequestConfigBase<Task, TaskError, Meta>;\r\n      error: TaskError;\r\n      hash: string;\r\n      meta: Meta;\r\n    } & SharedConfigs,\r\n    instance: RequestCore<Task, TaskError, Meta>\r\n  ) => Promise<{\r\n    isIgnored?: boolean;\r\n    error: TaskError;\r\n  }>;\r\n\r\n  finally?: (\r\n    props: {\r\n      parameters: Parameters<Task>;\r\n      config: RequestConfigBase<Task, TaskError, Meta>;\r\n      data: Awaited<ReturnType<Task>> | undefined | null;\r\n      error: TaskError | undefined;\r\n      hash: string;\r\n      meta: Meta;\r\n    } & SharedConfigs,\r\n    instance: RequestCore<Task, TaskError, Meta>\r\n  ) => Promise<{\r\n    isIgnored?: boolean;\r\n    data?: Awaited<ReturnType<Task>> | undefined | null;\r\n    error?: TaskError;\r\n  }>;\r\n};\r\n\r\nexport type SharedConfigs = {\r\n  isPreProcess: boolean | undefined;\r\n  isInvalidate: boolean | undefined;\r\n};\r\n\r\nexport type TaskManagerCoreConfig<\r\n  Task extends (...args: any) => Promise<any>,\r\n  TaskError = any,\r\n  Meta = Record<string, any>\r\n> = {\r\n  handler: Task;\r\n\r\n  retryOnError?: number;\r\n  retryOnErrorDelay?: number;\r\n  preventNewRequestDuration?: number;\r\n\r\n  defaultEventHandlers?: RequestEventHandlersType<Task, TaskError, Meta>;\r\n\r\n  interceptors?: TaskManagerInterceptorsType<Task, TaskError, Meta>;\r\n\r\n  meta?: Meta;\r\n\r\n  cache?: CacheCoreConfig;\r\n};\r\n\r\nexport type RequestDataRecordType<Task extends (...args: any) => Promise<any>> =\r\n  {\r\n    parameters?: Parameters<Task>;\r\n    hash?: string;\r\n    createdAt?: number;\r\n    updatedAt?: number;\r\n    isRequested?: boolean;\r\n    isSucceed?: boolean;\r\n    isCached?: boolean;\r\n    isBlocked?: boolean;\r\n    isFailed?: boolean;\r\n    status?: RequestStatus;\r\n    procedure?: RequestStatus[];\r\n    error?: any;\r\n    data?: Awaited<ReturnType<Task>> | null;\r\n    cache?: TypeCacheRecord<Awaited<ReturnType<Task>> | undefined | null>;\r\n  };\r\n\r\nexport type RequestStatus =\r\n  | \"requested\"\r\n  | \"began\"\r\n  | \"succeed\"\r\n  | \"cached\"\r\n  | \"blocked\"\r\n  | \"failed\";\r\n","import {\r\n  RequestConfigs,\r\n  RequestCore,\r\n  RequestEventHandlersType,\r\n  TaskManagerCoreConfig,\r\n} from \"./request-core\";\r\n\r\n/**\r\n * TaskManagerCore manages the tasks and triggers events based on the task's lifecycle.\r\n * The onCache, onRequest, onSuccess, onError, and onFinally events are triggered based on the task's lifecycle.\r\n *\r\n * @template Task - A function type that returns a Promise.\r\n * @template TaskError - The type of error that can be thrown by the task.\r\n */\r\nexport class TaskManagerCore<\r\n  Task extends (...args: any) => Promise<any>,\r\n  TaskError = any,\r\n  Meta = Record<string, any>\r\n> extends RequestCore<Task, TaskError, Meta> {\r\n  constructor(config: TaskManagerCoreConfig<Task, TaskError, Meta>) {\r\n    super(config);\r\n  }\r\n\r\n  /**\r\n   * Initiates a request with the given parameters.\r\n   *\r\n   * @param {...Parameters<Task>} parameters - The parameters to pass to the task.\r\n   * @returns {Promise<any>} - The result of the task.\r\n   */\r\n  public async request(...parameters: Parameters<Task>) {\r\n    this._retriedOnError = 0;\r\n\r\n    return await this._requestCore({\r\n      parameters,\r\n      config: {},\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Configures the request with the given configuration.\r\n   *\r\n   * @param {RequestConfigs<Task, TaskError, Meta>} config - The configuration for the request.\r\n   * @returns {Object} - An object containing a request function.\r\n   */\r\n  public config(config: RequestConfigs<Task, TaskError, Meta>): {\r\n    request: (...parameters: Parameters<Task>) => Promise<any>;\r\n  } {\r\n    if (config.isInvalidate && config.isPreProcess)\r\n      throw new Error(\"isInvalidate and isPreProcess cannot be used together!\");\r\n\r\n    return {\r\n      /**\r\n       * Initiates a request with the given parameters and the configured settings.\r\n       *\r\n       * @param {...Parameters<Task>} parameters - The parameters to pass to the task.\r\n       * @returns {Promise<any>} - The result of the task.\r\n       */\r\n      request: async (...parameters: Parameters<Task>) => {\r\n        this._retriedOnError = 0;\r\n\r\n        return await this._requestCore({\r\n          parameters,\r\n          config: config ?? {},\r\n        });\r\n      },\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Invalidates the current request.\r\n   * it will ignore any blocker logics and re-fetch the data.\r\n   *\r\n   * @param {Omit<RequestEventHandlersType<Task, TaskError,Meta>, \"onCache\">} [config={}] - The configuration for the request.\r\n   * @returns {Promise<any>} - The result of the invalidated task.\r\n   */\r\n  public async invalidate(\r\n    config: Omit<\r\n      RequestEventHandlersType<Task, TaskError, Meta>,\r\n      \"onCache\"\r\n    > = {}\r\n  ) {\r\n    const requestDetails = this.requestDetails.value;\r\n\r\n    if (!requestDetails?.createdAt) return;\r\n\r\n    const recentParameters = (requestDetails.parameters ??\r\n      []) as Parameters<Task>;\r\n\r\n    return await this.config({\r\n      ...config,\r\n      isInvalidate: true,\r\n    }).request(...recentParameters);\r\n  }\r\n\r\n  /**\r\n   * Pre-processes the request with the given parameters.\r\n   * It only affects the cache and does not change the current request parameters.\r\n   *\r\n   * @param {...Parameters<Task>} parameters - The parameters to pass to the task.\r\n   * @returns {Promise<any>} - The result of the pre-processed task.\r\n   */\r\n  public async preProcess(...parameters: Parameters<Task>) {\r\n    return await this._requestCore({\r\n      parameters,\r\n      config: {\r\n        isPreProcess: true,\r\n      },\r\n    });\r\n  }\r\n}\r\n\r\nexport function taskManager<\r\n  Task extends (...args: any) => Promise<any>,\r\n  TaskError = any,\r\n  Meta = Record<string, any>\r\n>(config: TaskManagerCoreConfig<Task, TaskError, Meta>) {\r\n  return new TaskManagerCore(config);\r\n}\r\n\r\nexport type {\r\n  RequestConfigBase,\r\n  RequestConfigs,\r\n  RequestDataRecordType,\r\n  RequestEventHandlersType,\r\n  RequestStatus,\r\n  SharedConfigs,\r\n  TaskManagerCoreConfig,\r\n  TaskManagerInterceptorsType,\r\n} from \"./request-core\";\r\n"],"mappings":"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","names":["clear","createStore","del","get","set","MD5","EncodeCore","_EncodeCore","_encodeConfig","parameters","length","object","key1","key2","CacheCore","EncodeCore","_cacheConfig","createStore","cacheKey","cache","get","value","set","error","del","clear","RequestCore","CacheCore","_config","updater","hash","isInvalidate","isPreProcess","requestDetails","preventDuration","isBlocked","prev","parameters","config","createdAt","meta","data","error","isError","isPrevented","result","currentError","parametersRaw","onRequest","onSuccess","onCache","cacheRaw","cache","isIgnored","isSameRequest","interceptedData","errorRaw","dataRaw","retryOnError","TaskManagerCore","RequestCore","config","parameters","requestDetails","recentParameters","taskManager"]}