@bitrix24/b24jssdk
Version:
Bitrix24 REST API JavaScript SDK
1 lines • 21 kB
Source Map (JSON)
{"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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"}