{"version":3,"file":"abstract-b24.mjs","sources":["../../../src/core/abstract-b24.ts"],"sourcesContent":["import type { LoggerInterface } from '../logger'\nimport type { AjaxResult } from './http/ajax-result'\nimport type { TypeB24 } from '../types/b24'\nimport type { BatchCommandsArrayUniversal, BatchCommandsObjectUniversal, BatchNamedCommandsUniversal, TypeCallParams, TypeHttp } from '../types/http'\nimport type { AuthActions } from '../types/auth'\nimport type { RestrictionParams } from '../types/limiters'\nimport { Type } from '../tools/type'\nimport { Result } from './result'\nimport { SdkError } from './sdk-error'\nimport { ApiVersion } from '../types/b24'\nimport { versionManager } from './version-manager'\nimport { LoggerFactory } from '../logger'\nimport { ActionsManager } from './actions/manager'\nimport { ToolsManager } from './tools/manager'\n\n/**\n * @todo docs\n */\nexport abstract class AbstractB24 implements TypeB24 {\n  /**\n   * Maximum length for batch response.\n   *\n   * @deprecated This const is deprecated and will be removed in version `2.0.0`\n   * @removed 2.0.0\n   */\n  static readonly batchSize = 50\n\n  protected _isInit: boolean = false\n  protected _httpV2: null | TypeHttp = null\n  protected _httpV3: null | TypeHttp = null\n  protected _logger: LoggerInterface\n\n  protected _actionsManager: ActionsManager\n  protected _toolsManager: ToolsManager\n\n  // region Init ////\n  protected constructor() {\n    this._isInit = false\n    this._logger = LoggerFactory.createNullLogger()\n\n    this._actionsManager = new ActionsManager(this)\n    this._toolsManager = new ToolsManager(this)\n  }\n\n  /**\n   * @inheritDoc\n   */\n  get isInit(): boolean {\n    return this._isInit\n  }\n\n  public async init(): Promise<void> {\n    this._isInit = true\n    return\n  }\n\n  public destroy(): void {}\n  // endregion ////\n\n  // region Core ////\n  abstract get auth(): AuthActions\n\n  get actions(): ActionsManager {\n    this._ensureInitialized()\n    return this._actionsManager\n  }\n\n  get tools(): ToolsManager {\n    this._ensureInitialized()\n    return this._toolsManager\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public abstract getTargetOrigin(): string\n\n  /**\n   * @inheritDoc\n   */\n  public abstract getTargetOriginWithPath(): Map<ApiVersion, string>\n\n  /**\n   * Calls the Bitrix24 REST API method.\n   *\n   * @deprecated This method is deprecated and will be removed in version `2.0.0`\n   *   - for `restApi:v3` use {@link CallV3.make `b24.actions.v3.call.make(options)`}\n   *   - for `restApi:v2` use {@link CallV2.make `b24.actions.v2.call.make(options)`}\n   *\n   * @removed 2.0.0\n   * @memo Only for `restApi:v2`\n   */\n  public async callMethod(method: string, params?: object, start?: number): Promise<AjaxResult> {\n    LoggerFactory.forcedLog(\n      this._logger,\n      'warning',\n      `The AbstractB24.callMethod() method is deprecated and will be removed in version 2.0.0. Use b24.actions.v3.call.make(options) or b24.actions.v2.call.make(options)`,\n      {\n        class: 'AbstractB24',\n        method: 'callMethod',\n        replacement: 'b24.actions.v3.call.make(options) | b24.actions.v2.call.make(options)',\n        removalVersion: '2.0.0',\n        code: 'JSSDK_CORE_DEPRECATED_METHOD'\n      }\n    )\n\n    params = { ...params }\n\n    if (\n      !(\n        'start' in params\n        && Number.isInteger(params.start)\n      )\n      && Number.isInteger(start)\n    ) {\n      (params as any).start = start\n    }\n\n    // @todo remove this\n    // const apiVersion = versionManager.automaticallyObtainApiVersion(method)\n    // if (apiVersion === ApiVersion.v3) {\n    //   return this._actionsManager.v3.call.make({ method, params })\n    // }\n\n    return this._actionsManager.v2.call.make({ method, params })\n  }\n\n  /**\n   * Calls a Bitrix24 REST API list method to retrieve all data.\n   *\n   * @deprecated This method is deprecated and will be removed in version `2.0.0`\n   *   - for `restApi:v3` use {@link CallListV3.make `b24.actions.v3.callList.make(options)`}\n   *   - for `restApi:v2` use {@link CallListV2.make `b24.actions.v2.callList.make(options)`}\n   *\n   * @removed 2.0.0\n   * @memo Only for `restApi:v2`\n   */\n  public async callListMethod(method: string, params?: object, progress?: null | ((progress: number) => void), customKeyForResult?: string | null): Promise<Result> {\n    LoggerFactory.forcedLog(\n      this._logger,\n      'warning',\n      `The AbstractB24.callListMethod() method is deprecated and will be removed in version 2.0.0. Use b24.actions.v3.callList.make(options) or b24.actions.v2.callList.make(options)`,\n      {\n        class: 'AbstractB24',\n        method: 'callListMethod',\n        replacement: 'b24.actions.v3.callList.make(options) | b24.actions.v2.callList.make(options)',\n        removalVersion: '2.0.0',\n        code: 'JSSDK_CORE_DEPRECATED_METHOD'\n      }\n    )\n\n    const result = new Result()\n\n    if (Type.isFunction(progress) && null !== progress) {\n      progress(0)\n    }\n\n    const sendParams: TypeCallParams = {\n      ...params,\n      start: 0\n    }\n    return this.actions.v2.call.make({\n      method,\n      params: sendParams\n    }).then(async (response) => {\n      let list: any[] = []\n\n      let resultData\n      if (customKeyForResult) {\n        resultData = (response.getData() as any).result[customKeyForResult] as []\n      } else {\n        resultData = (response.getData() as any).result as []\n      }\n\n      list = [...list, ...resultData]\n      if (response.isMore()) {\n        let responseLoop: false | AjaxResult = response\n        while (true) {\n          responseLoop = await responseLoop.getNext(this.getHttpClient(ApiVersion.v2))\n\n          if (responseLoop === false) {\n            break\n          }\n\n          let resultData = undefined\n          if (customKeyForResult) {\n            resultData = (responseLoop.getData() as any).result[customKeyForResult] as []\n          } else {\n            resultData = (responseLoop.getData() as any).result as []\n          }\n\n          list = [...list, ...resultData]\n\n          if (progress) {\n            const total = responseLoop.getTotal()\n            progress(total > 0 ? Math.round((100 * list.length) / total) : 100)\n          }\n        }\n      }\n\n      result.setData(list)\n      if (progress) {\n        progress(100)\n      }\n\n      return result\n    })\n  }\n\n  /**\n   * Calls a Bitrix24 REST API list method and returns an async generator.\n   *\n   * @deprecated This method is deprecated and will be removed in version `2.0.0`\n   *   - for `restApi:v3` use {@link FetchListV3.make `b24.actions.v3.fetchList.make(options)`}\n   *   - for `restApi:v2` use {@link FetchListV2.make `b24.actions.v2.fetchList.make(options)`}\n   *\n   * @removed 2.0.0\n   * @memo Only for `restApi:v2`\n   */\n  public async* fetchListMethod(method: string, params?: any, idKey?: string, customKeyForResult?: string | null): AsyncGenerator<any[]> {\n    LoggerFactory.forcedLog(\n      this._logger,\n      'warning',\n      `The AbstractB24.fetchListMethod() method is deprecated and will be removed in version 2.0.0. Use b24.actions.v3.fetchList.make(options) or b24.actions.v2.fetchList.make(options)`,\n      {\n        class: 'AbstractB24',\n        method: 'fetchListMethod',\n        replacement: 'b24.actions.v3.fetchList.make(options) | b24.actions.v2.fetchList.make(options)',\n        removalVersion: '2.0.0',\n        code: 'JSSDK_CORE_DEPRECATED_METHOD'\n      }\n    )\n    const options = {\n      method,\n      params,\n      idKey,\n      customKeyForResult: customKeyForResult === null ? undefined : customKeyForResult\n    }\n    yield* this.actions.v2.fetchList.make(options)\n  }\n\n  /**\n   * Executes a batch request to the Bitrix24 REST API.\n   *\n   * @deprecated This method is deprecated and will be removed in version `2.0.0`\n   *   - for `restApi:v3` use {@link BatchV3.make `b24.actions.v3.batch.make(options)`}\n   *   - for `restApi:v2` use {@link BatchV2.make `b24.actions.v2.batch.make(options)`}\n   *\n   * @removed 2.0.0\n   * @memo Only for `restApi:v2`\n   */\n  public async callBatch(calls: Array<any> | object, isHaltOnError?: boolean, returnAjaxResult?: boolean): Promise<Result> {\n    LoggerFactory.forcedLog(\n      this._logger,\n      'warning',\n      `The AbstractB24.callBatch() method is deprecated and will be removed in version 2.0.0. Use b24.actions.v3.batch.make(options) or b24.actions.v2.batch.make(options)`,\n      {\n        class: 'AbstractB24',\n        method: 'callBatch',\n        replacement: 'b24.actions.v3.batch.make(options) | b24.actions.v2.batch.make(options)',\n        removalVersion: '2.0.0',\n        code: 'JSSDK_CORE_DEPRECATED_METHOD'\n      }\n    )\n\n    const callsTyped = calls as BatchCommandsArrayUniversal | BatchCommandsObjectUniversal | BatchNamedCommandsUniversal\n    const options = {\n      isHaltOnError: isHaltOnError ?? true,\n      returnAjaxResult: returnAjaxResult ?? false\n    }\n\n    // @todo remove this\n    // const apiVersion = versionManager.automaticallyObtainApiVersionForBatch(callsTyped)\n    //\n    // if (apiVersion === ApiVersion.v3) {\n    //   return this.actions.v3.batch.make({\n    //     calls: callsTyped,\n    //     options\n    //   })\n    // }\n\n    return this.actions.v2.batch.make({\n      calls: callsTyped,\n      options\n    })\n  }\n\n  /**\n   * Executes a batch request to the Bitrix24 REST API with automatic chunking for any number of commands.\n   *\n   * @deprecated This method is deprecated and will be removed in version `2.0.0`\n   *   - for `restApi:v3` use {@link BatchByChunkV3.make `b24.actions.v3.batchByChunk.make(options)`}\n   *   - for `restApi:v2` use {@link BatchByChunkV2.make `b24.actions.v2.batchByChunk.make(options)`}\n   *\n   * @removed 2.0.0\n   * @memo Only for `restApi:v2`\n   */\n  public async callBatchByChunk(calls: Array<any>, isHaltOnError: boolean): Promise<Result> {\n    LoggerFactory.forcedLog(\n      this._logger,\n      'warning',\n      `The AbstractB24.callBatchByChunk() method is deprecated and will be removed in version 2.0.0. Use b24.actions.v3.batchByChunk.make(options) or b24.actions.v2.batchByChunk.make(options)`,\n      {\n        class: 'AbstractB24',\n        method: 'callBatchByChunk',\n        replacement: 'b24.actions.v3.batchByChunk.make(options) | b24.actions.v2.batchByChunk.make(options)',\n        removalVersion: '2.0.0',\n        code: 'JSSDK_CORE_DEPRECATED_METHOD'\n      }\n    )\n\n    const callsTyped = calls as BatchCommandsArrayUniversal | BatchCommandsObjectUniversal\n    const options = {\n      isHaltOnError,\n      returnAjaxResult: false\n    }\n\n    // @todo remove this\n    // const apiVersion = versionManager.automaticallyObtainApiVersionForBatch(calls)\n    // if (apiVersion === ApiVersion.v3) {\n    //   return this.actions.v3.batchByChunk.make({\n    //     calls: callsTyped,\n    //     options\n    //   })\n    // }\n\n    return this.actions.v2.batchByChunk.make({\n      calls: callsTyped,\n      options\n    })\n  }\n  // endregion ////\n\n  // region Tools ////\n  /**\n   * @inheritDoc\n   */\n  public getHttpClient(version: ApiVersion): TypeHttp {\n    this._ensureInitialized()\n\n    switch (version) {\n      case ApiVersion.v3:\n        if (null === this._httpV3) {\n          throw new SdkError({\n            code: 'JSSDK_CORE_B24_HTTP_V3_NOT_INIT',\n            description: `HttpV3 not init`,\n            status: 500\n          })\n        }\n        return this._httpV3\n      case ApiVersion.v2:\n        if (null === this._httpV2) {\n          throw new SdkError({\n            code: 'JSSDK_CORE_B24_HTTP_V2_NOT_INIT',\n            description: `HttpV2 not init`,\n            status: 500\n          })\n        }\n        return this._httpV2\n    }\n    throw new SdkError({\n      code: 'JSSDK_CORE_B24_API_WRONG',\n      description: `Wrong Api Version ${version}`,\n      status: 500\n    })\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public setHttpClient(version: ApiVersion, client: TypeHttp): void {\n    switch (version) {\n      case ApiVersion.v3:\n        this._httpV3 = client\n        return\n      case ApiVersion.v2:\n        this._httpV2 = client\n        return\n    }\n    throw new SdkError({\n      code: 'JSSDK_CORE_B24_API_WRONG',\n      description: `Wrong Api Version ${version}`,\n      status: 500\n    })\n  }\n\n  public setLogger(logger: LoggerInterface): void {\n    this._logger = logger\n\n    this._actionsManager.setLogger(this._logger)\n    this._toolsManager.setLogger(this._logger)\n\n    versionManager.getAllApiVersions().forEach((version) => {\n      this.getHttpClient(version).setLogger(this._logger)\n    })\n  }\n\n  public getLogger(): LoggerInterface {\n    return this._logger\n  }\n\n  /**\n   * @inheritDoc\n   */\n  public async setRestrictionManagerParams(params: RestrictionParams): Promise<void> {\n    const promises = versionManager.getAllApiVersions().map(version =>\n      this.getHttpClient(version).setRestrictionManagerParams(params)\n    )\n\n    await Promise.allSettled(promises)\n  }\n\n  /**\n   * Returns settings for http connection\n   * @protected\n   */\n  protected _getHttpOptions(): null | object {\n    return null\n  }\n\n  /**\n   * Generates an object not initialized error\n   * @protected\n   */\n  protected _ensureInitialized(): void {\n    if (!this._isInit) {\n      throw new SdkError({\n        code: 'JSSDK_CORE_B24_NOT_INIT',\n        description: `B24 not initialized`,\n        status: 500\n      })\n    }\n  }\n  // endregion ////\n}\n"],"names":["resultData"],"mappings":"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"}