{"version":3,"file":"abstract-processing.mjs","sources":["../../../../../../../src/core/interaction/batch/processing/v2/abstract-processing.ts"],"sourcesContent":["import type { BatchCommandV3, ICallBatchResult } from '../../../../../types/http'\nimport type { IProcessingStrategy, ResponseHelper, ResultItems } from '../interface-strategy'\nimport type { BatchResponseData } from '../../abstract-interaction-batch'\nimport * as qs from 'qs-esm'\nimport { AbstractProcessing } from '../interface-strategy'\nimport { SdkError } from '../../../../sdk-error'\nimport { AjaxResult } from '../../../../http/ajax-result'\nimport { Result } from '../../../../result'\n\nexport abstract class AbstractProcessingV2 extends AbstractProcessing implements IProcessingStrategy {\n  protected _buildRow(command: BatchCommandV3): string {\n    return `${command.method}?${qs.stringify(command.query || {})}`\n  }\n\n  public buildCommands(commands: BatchCommandV3[]): string[] | Record<string, string> {\n    if (commands.length < 1) {\n      throw new SdkError({\n        code: 'JSSDK_INTERACTION_BATCH_STRATEGY_V2_EMPTY_COMMANDS',\n        description: 'commands not set',\n        status: 500\n      })\n    }\n\n    const firstCommand = commands[0]!\n    const asObject = (typeof firstCommand.as === 'string' && firstCommand.as.length > 0)\n\n    if (asObject) {\n      const result: Record<string, string> = {}\n\n      for (const command of commands) {\n        result[command.as!] = this._buildRow(command)\n      }\n      return result\n    }\n\n    const result: string[] = []\n\n    for (const command of commands) {\n      result.push(this._buildRow(command))\n    }\n    return result\n  }\n\n  // region prepareItems ////\n  public override async prepareItems<T>(\n    commands: BatchCommandV3[],\n    responseHelper: ResponseHelper<T>\n  ): Promise<ResultItems<T>> {\n    const results: ResultItems<T> = new Map()\n\n    for (const [index, command] of commands.entries()) {\n      await this._processResponseItem<T>(\n        command,\n        // @memo for apiVer2 in this pace we get objectIndex from `command.as` OR array `index` from `commands[]`\n        command.as ?? index,\n        responseHelper,\n        results\n      )\n    }\n\n    return results\n  }\n\n  protected override async _processResponseItem<T>(\n    command: BatchCommandV3,\n    index: string | number,\n    responseHelper: ResponseHelper<T>,\n    results: Map<string | number, AjaxResult<T>>\n  ): Promise<void> {\n    const responseResult = responseHelper.response.getData()!.result as unknown as BatchResponseData<T>\n    const resultData = this._getBatchResultByIndex(responseResult.result, index)\n    const resultError = this._getBatchResultByIndex(responseResult.result_error, index)\n\n    if (\n      typeof resultData !== 'undefined'\n      || typeof resultError !== 'undefined'\n    ) {\n      const methodName = command.method\n\n      // Update operating statistics for each method in the batch\n      const resultTime = this._getBatchResultByIndex(responseResult.result_time, index)\n      if (typeof resultTime !== 'undefined') {\n        await responseHelper.restrictionManager.updateStats(responseHelper.requestId, `batch::${methodName}`, resultTime)\n      }\n\n      const result = new AjaxResult<T>({\n        answer: {\n          error: resultError ? (typeof resultError === 'string' ? resultError : resultError.error) : undefined,\n          error_description: resultError ? (typeof resultError === 'string' ? undefined : resultError.error_description) : undefined,\n          result: (resultData ?? {}) as T,\n          total: Number.parseInt(this._getBatchResultByIndex(responseResult.result_total, index) || '0'),\n          next: Number.parseInt(this._getBatchResultByIndex(responseResult.result_next, index) || '0'),\n          time: resultTime!\n        },\n        query: {\n          method: methodName,\n          params: command.query || {},\n          requestId: responseHelper.requestId\n        },\n        status: responseHelper.response.getStatus()\n      })\n\n      results.set(index, result)\n\n      return\n    }\n\n    if (responseHelper.parallelDefaultValue) {\n      throw new SdkError({\n        code: 'JSSDK_INTERACTION_BATCH_STRATEGY_V2_EMPTY_COMMAND_RESPONSE',\n        description: `There were difficulties parsing the response for batch { index: ${index}, method: ${command.method} }`,\n        status: 500\n      })\n    }\n  }\n  // endregion ////\n\n  // region handleResults ////\n  public override async handleResults<T>(_commands: BatchCommandV3[], results: ResultItems<T>, responseHelper: ResponseHelper<T>): Promise<Result<ICallBatchResult<T>>> {\n    const result = new Result<ICallBatchResult<T>>()\n    const dataResult: ResultItems<T> = new Map()\n\n    for (const [index, data] of results) {\n      if (data.getStatus() !== 200 || !data.isSuccess) {\n        const ajaxError = this._createErrorFromAjaxResult(data)\n\n        /*\n         * This should contain code similar to #isOperatingLimitError with a check for\n         * the error 'Method is blocked due to operation time limit.'\n         * However, `batch` is executed without retries, so there will be an immediate error.\n         */\n\n        // @todo fix docs\n        // @memo we not throw ajaxError\n        this._processResponseError<T>(result, ajaxError, `${index}`)\n        dataResult.set(index, data)\n\n        // if (responseHelper.parallelDefaultValue && !data.isSuccess) {\n        //   this._processResponseError<T>(result, ajaxError, `${index}`)\n        //   dataResult.set(index, data)\n        //   continue\n        // }\n        //\n        // throw ajaxError\n      }\n\n      dataResult.set(index, data)\n    }\n\n    result.setData({\n      result: dataResult,\n      time: responseHelper.response.getData()!.time\n    })\n\n    return result\n  }\n  // endregion ////\n}\n"],"names":["result"],"mappings":";;;;;;;;;;;;;;;;AASO,MAAe,6BAA6B,kBAAA,CAAkD;AAAA,EATrG;AASqG,IAAA,MAAA,CAAA,IAAA,EAAA,sBAAA,CAAA;AAAA;AAAA,EACzF,UAAU,OAAA,EAAiC;AACnD,IAAA,OAAO,CAAA,EAAG,OAAA,CAAQ,MAAM,CAAA,CAAA,EAAI,EAAA,CAAG,UAAU,OAAA,CAAQ,KAAA,IAAS,EAAE,CAAC,CAAA,CAAA;AAAA,EAC/D;AAAA,EAEO,cAAc,QAAA,EAA+D;AAClF,IAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,MAAA,MAAM,IAAI,QAAA,CAAS;AAAA,QACjB,IAAA,EAAM,oDAAA;AAAA,QACN,WAAA,EAAa,kBAAA;AAAA,QACb,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,YAAA,GAAe,SAAS,CAAC,CAAA;AAC/B,IAAA,MAAM,WAAY,OAAO,YAAA,CAAa,OAAO,QAAA,IAAY,YAAA,CAAa,GAAG,MAAA,GAAS,CAAA;AAElF,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAMA,UAAiC,EAAC;AAExC,MAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,QAAAA,QAAO,OAAA,CAAQ,EAAG,CAAA,GAAI,IAAA,CAAK,UAAU,OAAO,CAAA;AAAA,MAC9C;AACA,MAAA,OAAOA,OAAAA;AAAA,IACT;AAEA,IAAA,MAAM,SAAmB,EAAC;AAE1B,IAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,MAAA,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,OAAO,CAAC,CAAA;AAAA,IACrC;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAAA,EAGA,MAAsB,YAAA,CACpB,QAAA,EACA,cAAA,EACyB;AACzB,IAAA,MAAM,OAAA,uBAA8B,GAAA,EAAI;AAExC,IAAA,KAAA,MAAW,CAAC,KAAA,EAAO,OAAO,CAAA,IAAK,QAAA,CAAS,SAAQ,EAAG;AACjD,MAAA,MAAM,IAAA,CAAK,oBAAA;AAAA,QACT,OAAA;AAAA;AAAA,QAEA,QAAQ,EAAA,IAAM,KAAA;AAAA,QACd,cAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAEA,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEA,MAAyB,oBAAA,CACvB,OAAA,EACA,KAAA,EACA,gBACA,OAAA,EACe;AACf,IAAA,MAAM,cAAA,GAAiB,cAAA,CAAe,QAAA,CAAS,OAAA,EAAQ,CAAG,MAAA;AAC1D,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,sBAAA,CAAuB,cAAA,CAAe,QAAQ,KAAK,CAAA;AAC3E,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,sBAAA,CAAuB,cAAA,CAAe,cAAc,KAAK,CAAA;AAElF,IAAA,IACE,OAAO,UAAA,KAAe,WAAA,IACnB,OAAO,gBAAgB,WAAA,EAC1B;AACA,MAAA,MAAM,aAAa,OAAA,CAAQ,MAAA;AAG3B,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,sBAAA,CAAuB,cAAA,CAAe,aAAa,KAAK,CAAA;AAChF,MAAA,IAAI,OAAO,eAAe,WAAA,EAAa;AACrC,QAAA,MAAM,cAAA,CAAe,mBAAmB,WAAA,CAAY,cAAA,CAAe,WAAW,CAAA,OAAA,EAAU,UAAU,IAAI,UAAU,CAAA;AAAA,MAClH;AAEA,MAAA,MAAM,MAAA,GAAS,IAAI,UAAA,CAAc;AAAA,QAC/B,MAAA,EAAQ;AAAA,UACN,OAAO,WAAA,GAAe,OAAO,gBAAgB,QAAA,GAAW,WAAA,GAAc,YAAY,KAAA,GAAS,MAAA;AAAA,UAC3F,mBAAmB,WAAA,GAAe,OAAO,gBAAgB,QAAA,GAAW,MAAA,GAAY,YAAY,iBAAA,GAAqB,MAAA;AAAA,UACjH,MAAA,EAAS,cAAc,EAAC;AAAA,UACxB,KAAA,EAAO,OAAO,QAAA,CAAS,IAAA,CAAK,uBAAuB,cAAA,CAAe,YAAA,EAAc,KAAK,CAAA,IAAK,GAAG,CAAA;AAAA,UAC7F,IAAA,EAAM,OAAO,QAAA,CAAS,IAAA,CAAK,uBAAuB,cAAA,CAAe,WAAA,EAAa,KAAK,CAAA,IAAK,GAAG,CAAA;AAAA,UAC3F,IAAA,EAAM;AAAA,SACR;AAAA,QACA,KAAA,EAAO;AAAA,UACL,MAAA,EAAQ,UAAA;AAAA,UACR,MAAA,EAAQ,OAAA,CAAQ,KAAA,IAAS,EAAC;AAAA,UAC1B,WAAW,cAAA,CAAe;AAAA,SAC5B;AAAA,QACA,MAAA,EAAQ,cAAA,CAAe,QAAA,CAAS,SAAA;AAAU,OAC3C,CAAA;AAED,MAAA,OAAA,CAAQ,GAAA,CAAI,OAAO,MAAM,CAAA;AAEzB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,eAAe,oBAAA,EAAsB;AACvC,MAAA,MAAM,IAAI,QAAA,CAAS;AAAA,QACjB,IAAA,EAAM,4DAAA;AAAA,QACN,WAAA,EAAa,CAAA,gEAAA,EAAmE,KAAK,CAAA,UAAA,EAAa,QAAQ,MAAM,CAAA,EAAA,CAAA;AAAA,QAChH,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA,EAIA,MAAsB,aAAA,CAAiB,SAAA,EAA6B,OAAA,EAAyB,cAAA,EAAyE;AACpK,IAAA,MAAM,MAAA,GAAS,IAAI,MAAA,EAA4B;AAC/C,IAAA,MAAM,UAAA,uBAAiC,GAAA,EAAI;AAE3C,IAAA,KAAA,MAAW,CAAC,KAAA,EAAO,IAAI,CAAA,IAAK,OAAA,EAAS;AACnC,MAAA,IAAI,KAAK,SAAA,EAAU,KAAM,GAAA,IAAO,CAAC,KAAK,SAAA,EAAW;AAC/C,QAAA,MAAM,SAAA,GAAY,IAAA,CAAK,0BAAA,CAA2B,IAAI,CAAA;AAUtD,QAAA,IAAA,CAAK,qBAAA,CAAyB,MAAA,EAAQ,SAAA,EAAW,CAAA,EAAG,KAAK,CAAA,CAAE,CAAA;AAC3D,QAAA,UAAA,CAAW,GAAA,CAAI,OAAO,IAAI,CAAA;AAAA,MAS5B;AAEA,MAAA,UAAA,CAAW,GAAA,CAAI,OAAO,IAAI,CAAA;AAAA,IAC5B;AAEA,IAAA,MAAA,CAAO,OAAA,CAAQ;AAAA,MACb,MAAA,EAAQ,UAAA;AAAA,MACR,IAAA,EAAM,cAAA,CAAe,QAAA,CAAS,OAAA,EAAQ,CAAG;AAAA,KAC1C,CAAA;AAED,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAEF;;;;"}