{"version":3,"file":"interface-strategy.mjs","sources":["../../../../../../src/core/interaction/batch/processing/interface-strategy.ts"],"sourcesContent":["import type { BatchCommandV3, ICallBatchResult } from '../../../../types/http'\nimport type { BatchPayload } from '../../../../types/payloads'\nimport type { AjaxResult } from '../../../http/ajax-result'\nimport type { RestrictionManager } from '../../../http/limiters/manager'\nimport type { Result } from '../../../result'\nimport { AjaxError } from '../../../http/ajax-error'\n\nexport type GetCommandsOptions = {\n  // @memo this regeneration `isHaltOnError` -> !isHaltOnError\n  parallelDefaultValue: boolean\n}\n\nexport type ResponseHelper<T> = {\n  requestId: string\n  parallelDefaultValue: boolean\n  response: AjaxResult<BatchPayload<T>>\n  // status: number\n  // data: BatchPayloadResult<T>\n  // time: PayloadTime\n  restrictionManager: RestrictionManager\n}\n\nexport type ResultItems<T> = Map<string | number, AjaxResult<T>>\n\nexport interface IProcessingStrategy {\n  prepareCommands(calls: unknown, options: GetCommandsOptions): BatchCommandV3[]\n  buildCommands(commands: BatchCommandV3[]): unknown\n  prepareItems<T>(commands: BatchCommandV3[], responseHelper: ResponseHelper<T>): Promise<ResultItems<T>>\n  handleResults<T>(commands: BatchCommandV3[], results: ResultItems<T>, responseHelper: ResponseHelper<T>): Promise<Result<ICallBatchResult<T>>>\n}\n\nexport abstract class AbstractProcessing implements IProcessingStrategy {\n  public abstract prepareCommands(calls: unknown, options: GetCommandsOptions): BatchCommandV3[]\n  public abstract buildCommands(commands: BatchCommandV3[]): unknown\n\n  // region prepareItems ////\n  public abstract prepareItems<T>(\n    commands: BatchCommandV3[],\n    responseHelper: ResponseHelper<T>\n  ): Promise<ResultItems<T>>\n\n  protected abstract _processResponseItem<T>(\n    command: BatchCommandV3,\n    index: string | number,\n    responseHelper: ResponseHelper<T>,\n    results: Map<string | number, AjaxResult<T>>\n  ): Promise<void>\n  // endregion ////\n\n  // region handleResults ////\n  public abstract handleResults<T>(commands: BatchCommandV3[], results: ResultItems<T>, responseHelper: ResponseHelper<T>): Promise<Result<ICallBatchResult<T>>>\n\n  protected abstract _processResponseError<T>(result: Result<ICallBatchResult<T>>, ajaxError: AjaxError, index: string): void\n  // endregion ////\n\n  // region Tools ////\n  protected _getBatchResultByIndex<T>(\n    data: T[] | Record<string | number, T> | undefined,\n    index: string | number\n  ): T | undefined {\n    if (!data) return undefined\n\n    if (Array.isArray(data)) {\n      return data[index as number]\n    }\n\n    return (data as Record<string | number, T>)[index]\n  }\n\n  protected _createErrorFromAjaxResult(ajaxResult: AjaxResult): AjaxError {\n    if (ajaxResult.hasError('base-error')) {\n      return ajaxResult.errors.get('base-error') as AjaxError\n    }\n\n    return new AjaxError({\n      code: 'JSSDK_BATCH_SUB_ERROR',\n      description: ajaxResult.getErrorMessages().join('; '),\n      status: ajaxResult.getStatus(),\n      requestInfo: { ...ajaxResult.getQuery() },\n      originalError: ajaxResult.getErrors().next().value\n    })\n  }\n  // endregion ////\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AA+BO,MAAe,kBAAA,CAAkD;AAAA,EA/BxE;AA+BwE,IAAA,MAAA,CAAA,IAAA,EAAA,oBAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAyB5D,sBAAA,CACR,MACA,KAAA,EACe;AACf,IAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAElB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,MAAA,OAAO,KAAK,KAAe,CAAA;AAAA,IAC7B;AAEA,IAAA,OAAQ,KAAoC,KAAK,CAAA;AAAA,EACnD;AAAA,EAEU,2BAA2B,UAAA,EAAmC;AACtE,IAAA,IAAI,UAAA,CAAW,QAAA,CAAS,YAAY,CAAA,EAAG;AACrC,MAAA,OAAO,UAAA,CAAW,MAAA,CAAO,GAAA,CAAI,YAAY,CAAA;AAAA,IAC3C;AAEA,IAAA,OAAO,IAAI,SAAA,CAAU;AAAA,MACnB,IAAA,EAAM,uBAAA;AAAA,MACN,WAAA,EAAa,UAAA,CAAW,gBAAA,EAAiB,CAAE,KAAK,IAAI,CAAA;AAAA,MACpD,MAAA,EAAQ,WAAW,SAAA,EAAU;AAAA,MAC7B,WAAA,EAAa,EAAE,GAAG,UAAA,CAAW,UAAS,EAAE;AAAA,MACxC,aAAA,EAAe,UAAA,CAAW,SAAA,EAAU,CAAE,MAAK,CAAE;AAAA,KAC9C,CAAA;AAAA,EACH;AAAA;AAEF;;;;"}