@bitrix24/b24jssdk 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/_virtual/_commonjsHelpers.mjs +1 -1
- package/dist/esm/_virtual/protobuf.mjs +1 -1
- package/dist/esm/_virtual/protobuf2.mjs +1 -1
- package/dist/esm/core/abstract-b24.mjs +1 -1
- package/dist/esm/core/abstract-b24.mjs.map +1 -1
- package/dist/esm/core/actions/abstract-action.mjs +1 -1
- package/dist/esm/core/actions/abstract-batch.mjs +1 -1
- package/dist/esm/core/actions/manager.mjs +1 -1
- package/dist/esm/core/actions/v2/batch-by-chunk.mjs +2 -1
- package/dist/esm/core/actions/v2/batch-by-chunk.mjs.map +1 -1
- package/dist/esm/core/actions/v2/batch.mjs +1 -1
- package/dist/esm/core/actions/v2/call-list.mjs +1 -1
- package/dist/esm/core/actions/v2/call-list.mjs.map +1 -1
- package/dist/esm/core/actions/v2/call.mjs +1 -1
- package/dist/esm/core/actions/v2/fetch-list.mjs +1 -1
- package/dist/esm/core/actions/v2/fetch-list.mjs.map +1 -1
- package/dist/esm/core/actions/v2/manager-v2.mjs +1 -1
- package/dist/esm/core/actions/v3/batch-by-chunk.mjs +1 -1
- package/dist/esm/core/actions/v3/batch-by-chunk.mjs.map +1 -1
- package/dist/esm/core/actions/v3/batch.mjs +1 -1
- package/dist/esm/core/actions/v3/call-list.mjs +1 -1
- package/dist/esm/core/actions/v3/call-list.mjs.map +1 -1
- package/dist/esm/core/actions/v3/call.mjs +1 -1
- package/dist/esm/core/actions/v3/fetch-list.mjs +2 -1
- package/dist/esm/core/actions/v3/fetch-list.mjs.map +1 -1
- package/dist/esm/core/actions/v3/manager-v3.mjs +1 -1
- package/dist/esm/core/http/abstract-http.mjs +2 -2
- package/dist/esm/core/http/ajax-error.mjs +1 -1
- package/dist/esm/core/http/ajax-result.mjs +1 -1
- package/dist/esm/core/http/limiters/adaptive-delayer.mjs +1 -1
- package/dist/esm/core/http/limiters/manager.mjs +1 -1
- package/dist/esm/core/http/limiters/operating-limiter.mjs +1 -1
- package/dist/esm/core/http/limiters/params-factory.mjs +1 -1
- package/dist/esm/core/http/limiters/rate-limiter.mjs +1 -1
- package/dist/esm/core/http/v2.mjs +2 -2
- package/dist/esm/core/http/v3.mjs +2 -2
- package/dist/esm/core/interaction/batch/abstract-interaction-batch.mjs +1 -1
- package/dist/esm/core/interaction/batch/parse-row.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/interface-strategy.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/v2/as-array.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/v2/as-object.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/v3/as-array.mjs +1 -1
- package/dist/esm/core/interaction/batch/processing/v3/as-object.mjs +1 -1
- package/dist/esm/core/interaction/batch/v2.mjs +1 -1
- package/dist/esm/core/interaction/batch/v3.mjs +1 -1
- package/dist/esm/core/language/list.mjs +1 -1
- package/dist/esm/core/request-id-generator.mjs +1 -1
- package/dist/esm/core/result.mjs +1 -1
- package/dist/esm/core/sdk-error.mjs +1 -1
- package/dist/esm/core/tools/abstract-tool.mjs +1 -1
- package/dist/esm/core/tools/healthcheck.mjs +1 -1
- package/dist/esm/core/tools/manager.mjs +1 -1
- package/dist/esm/core/tools/ping.mjs +1 -1
- package/dist/esm/core/version-manager.mjs +1 -1
- package/dist/esm/frame/auth.mjs +1 -1
- package/dist/esm/frame/b24.mjs +1 -1
- package/dist/esm/frame/dialog.mjs +1 -1
- package/dist/esm/frame/frame.mjs +1 -1
- package/dist/esm/frame/message/commands.mjs +1 -1
- package/dist/esm/frame/message/controller.mjs +1 -1
- package/dist/esm/frame/options.mjs +1 -1
- package/dist/esm/frame/parent.mjs +1 -1
- package/dist/esm/frame/placement.mjs +1 -1
- package/dist/esm/frame/slider.mjs +1 -1
- package/dist/esm/helper/abstract-helper.mjs +1 -1
- package/dist/esm/helper/app-manager.mjs +1 -1
- package/dist/esm/helper/currency-manager.mjs +1 -1
- package/dist/esm/helper/helper-manager.mjs +1 -1
- package/dist/esm/helper/license-manager.mjs +1 -1
- package/dist/esm/helper/options-manager.mjs +1 -1
- package/dist/esm/helper/payment-manager.mjs +1 -1
- package/dist/esm/helper/profile-manager.mjs +1 -1
- package/dist/esm/helper/use-b24-helper.mjs +1 -1
- package/dist/esm/hook/auth.mjs +1 -1
- package/dist/esm/hook/b24.mjs +1 -1
- package/dist/esm/index.d.mts +3 -3
- package/dist/esm/index.d.ts +3 -3
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/loader-b24frame.mjs +1 -1
- package/dist/esm/logger/abstract-logger.mjs +1 -1
- package/dist/esm/logger/browser.mjs +1 -1
- package/dist/esm/logger/formatter/abstract-formatter.mjs +1 -1
- package/dist/esm/logger/formatter/json-formatter.mjs +1 -1
- package/dist/esm/logger/formatter/line-formatter.mjs +1 -1
- package/dist/esm/logger/formatter/telegram-formatter.mjs +1 -1
- package/dist/esm/logger/handler/abstract-handler.mjs +1 -1
- package/dist/esm/logger/handler/consola-adapter.mjs +1 -1
- package/dist/esm/logger/handler/console-handler.mjs +1 -1
- package/dist/esm/logger/handler/console-v2-handler.mjs +1 -1
- package/dist/esm/logger/handler/memory-handler.mjs +1 -1
- package/dist/esm/logger/handler/stream-handler.mjs +1 -1
- package/dist/esm/logger/handler/telegram-handler.mjs +1 -1
- package/dist/esm/logger/handler/winston-adapter.mjs +1 -1
- package/dist/esm/logger/logger-factory.mjs +1 -1
- package/dist/esm/logger/logger.mjs +1 -1
- package/dist/esm/logger/null-logger.mjs +1 -1
- package/dist/esm/logger/processor/memory-usage-processor.mjs +1 -1
- package/dist/esm/logger/processor/pid-processor.mjs +1 -1
- package/dist/esm/oauth/auth.mjs +1 -1
- package/dist/esm/oauth/auth.mjs.map +1 -1
- package/dist/esm/oauth/b24.mjs +1 -1
- package/dist/esm/oauth/refresh-token-error.mjs +1 -1
- package/dist/esm/pullClient/abstract-connector.mjs +1 -1
- package/dist/esm/pullClient/channel-manager.mjs +1 -1
- package/dist/esm/pullClient/client.mjs +1 -1
- package/dist/esm/pullClient/client.mjs.map +1 -1
- package/dist/esm/pullClient/errors.mjs +1 -1
- package/dist/esm/pullClient/json-rpc.mjs +1 -1
- package/dist/esm/pullClient/long-polling-connector.mjs +1 -1
- package/dist/esm/pullClient/protobuf/index.mjs +1 -1
- package/dist/esm/pullClient/protobuf/model.mjs +1 -1
- package/dist/esm/pullClient/protobuf/protobuf.mjs +1 -1
- package/dist/esm/pullClient/shared-config.mjs +1 -1
- package/dist/esm/pullClient/storage-manager.mjs +1 -1
- package/dist/esm/pullClient/web-socket-connector.mjs +1 -1
- package/dist/esm/tools/browser.mjs +1 -1
- package/dist/esm/tools/environment.mjs +1 -1
- package/dist/esm/tools/formatters/iban.mjs +1 -1
- package/dist/esm/tools/formatters/numbers.mjs +1 -1
- package/dist/esm/tools/index.mjs +1 -1
- package/dist/esm/tools/scroll-size.mjs +1 -1
- package/dist/esm/tools/text.mjs +1 -1
- package/dist/esm/tools/type.mjs +1 -1
- package/dist/esm/tools/use-formatters.mjs +1 -1
- package/dist/esm/tools/uuidv7.mjs +1 -1
- package/dist/esm/types/b24-helper.mjs +1 -1
- package/dist/esm/types/b24.mjs +1 -1
- package/dist/esm/types/bizproc/index.mjs +1 -1
- package/dist/esm/types/catalog/index.mjs +1 -1
- package/dist/esm/types/common.mjs +1 -1
- package/dist/esm/types/crm/entity-type.mjs +1 -1
- package/dist/esm/types/crm/productrow.mjs +1 -1
- package/dist/esm/types/logger.mjs +1 -1
- package/dist/esm/types/pull.mjs +1 -1
- package/dist/umd/index.js +6 -4
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/index.min.js +8 -8
- package/dist/umd/index.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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 { ListPayload } from '../types/payloads'\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 ListPayload<any>).result[customKeyForResult] as []\n } else {\n resultData = (response.getData() as ListPayload<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 ListPayload<any>).result[customKeyForResult] as []\n } else {\n resultData = (responseLoop.getData() as ListPayload<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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"}
|
|
1
|
+
{"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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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package @bitrix24/b24jssdk
|
|
3
|
-
* @version 1.0.
|
|
3
|
+
* @version 1.0.3
|
|
4
4
|
* @copyright (c) 2026 Bitrix24
|
|
5
5
|
* @license MIT
|
|
6
6
|
* @see https://github.com/bitrix24/b24jssdk
|
|
@@ -50,6 +50,7 @@ class BatchByChunkV2 extends AbstractBatch {
|
|
|
50
50
|
* requestId: 'batch-by-chunk-123'
|
|
51
51
|
* }
|
|
52
52
|
* })
|
|
53
|
+
*
|
|
53
54
|
* if (!response.isSuccess) {
|
|
54
55
|
* throw new Error(`Problem: ${response.getErrorMessages().join('; ')}`)
|
|
55
56
|
* }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-by-chunk.mjs","sources":["../../../../../src/core/actions/v2/batch-by-chunk.ts"],"sourcesContent":["import type { ActionOptions } from '../abstract-action'\nimport type {\n BatchCommandsArrayUniversal,\n BatchCommandsObjectUniversal, BatchCommandsUniversal\n} from '../../../types/http'\nimport type { IB24BatchOptions } from '../../../types/b24'\nimport { AbstractBatch } from '../abstract-batch'\nimport { ApiVersion } from '../../../types/b24'\nimport { Result } from '../../result'\n\nexport type ActionBatchByChunkV2 = ActionOptions & {\n calls: BatchCommandsArrayUniversal | BatchCommandsObjectUniversal\n options?: Omit<IB24BatchOptions, 'returnAjaxResult'>\n}\n\n/**\n * Executes a batch request with automatic chunking for any number of commands. `restApi:v2`\n *\n * @todo add docs\n */\nexport class BatchByChunkV2 extends AbstractBatch {\n /**\n * Executes a batch request with automatic chunking for any number of commands.\n * Unlike `BatchV2`, which is limited to 50 commands, this method automatically splits\n * a large set of commands into multiple batches and executes them sequentially.\n *\n * @template T - The data type returned by commands (default: `unknown`)\n *\n * @param {ActionBatchByChunkV2} options - parameters for executing the request.\n * - `calls: BatchCommandsArrayUniversal | BatchCommandsObjectUniversal` - Commands to execute in a batch.\n * Supports several formats:\n * 1. Array of tuples: `[['method1', params1], ['method2', params2], ...]`\n * 2. Array of objects: `[{ method: 'method1', params: params1 }, { method: 'method2', params: params2 }, ...]`\n * - Note: Named commands are not supported as they are difficult to process when chunking.\n * - `options?: Omit<IB24BatchOptions, 'returnAjaxResult'>` - Additional options for executing a batch request.\n * - `isHaltOnError?: boolean` - Whether to stop execution on the first error (default: true)\n * - `requestId?: string` - Unique request identifier for tracking. Used for query deduplication and debugging (default: undefined)\n *\n * @returns {Promise<Result<T[]>>} A promise that is resolved by the result of executing all commands.\n *\n * @example\n * import { EnumCrmEntityTypeId, Text } from '@bitrix24/b24jssdk'\n *\n * interface Contact { id: number, name: string }\n * const commands = Array.from({ length: 150 }, (_, i) =>\n * ['crm.item.get', { entityTypeId: EnumCrmEntityTypeId.contact, id: i + 1 }]\n * )\n *\n * const response = await b24.actions.v2.batchByChunk.make<{ item: Contact }>({\n * calls: commands,\n * options: {\n * isHaltOnError: false,\n * requestId: 'batch-by-chunk-123'\n * }\n * })\n * if (!response.isSuccess) {\n * throw new Error(`Problem: ${response.getErrorMessages().join('; ')}`)\n * }\n *\n * const resultData = response.getData()\n * const items: Contact[] = []\n * resultData.forEach((chunkRow) => {\n * items.push(chunkRow.item)\n * })\n * console.log(`Successfully retrieved ${items.length} items`)\n *\n * @tip For very large command sets, consider using server-side task queues instead of bulk batch requests.\n */\n public override async make<T = unknown>(options: ActionBatchByChunkV2): Promise<Result<T[]>> {\n const batchSize = 50\n\n const opts = {\n ...options.options,\n returnAjaxResult: false,\n apiVersion: ApiVersion.v2\n }\n\n // callBatchByChunk\n const result = new Result<T[]>()\n\n const dataResult: T[] = []\n const chunks = this.chunkArray(options.calls as BatchCommandsUniversal, batchSize) as BatchCommandsArrayUniversal[] | BatchCommandsObjectUniversal[]\n\n for (const chunkRequest of chunks) {\n const response = await this._b24.getHttpClient(ApiVersion.v2).batch<T[]>(chunkRequest, opts)\n\n if (!response.isSuccess) {\n this._addBatchErrorsIfAny(response, result)\n }\n\n for (const [_index, data] of response.getData()!.result!) {\n // @memo Add only success rows\n if (data.isSuccess) {\n dataResult.push(data.getData()!.result)\n }\n }\n }\n\n return result.setData(dataResult)\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAoBO,MAAM,uBAAuB,aAAA,CAAc;AAAA,EApBlD;AAoBkD,IAAA,MAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"batch-by-chunk.mjs","sources":["../../../../../src/core/actions/v2/batch-by-chunk.ts"],"sourcesContent":["import type { ActionOptions } from '../abstract-action'\nimport type {\n BatchCommandsArrayUniversal,\n BatchCommandsObjectUniversal, BatchCommandsUniversal\n} from '../../../types/http'\nimport type { IB24BatchOptions } from '../../../types/b24'\nimport { AbstractBatch } from '../abstract-batch'\nimport { ApiVersion } from '../../../types/b24'\nimport { Result } from '../../result'\n\nexport type ActionBatchByChunkV2 = ActionOptions & {\n calls: BatchCommandsArrayUniversal | BatchCommandsObjectUniversal\n options?: Omit<IB24BatchOptions, 'returnAjaxResult'>\n}\n\n/**\n * Executes a batch request with automatic chunking for any number of commands. `restApi:v2`\n *\n * @todo add docs\n */\nexport class BatchByChunkV2 extends AbstractBatch {\n /**\n * Executes a batch request with automatic chunking for any number of commands.\n * Unlike `BatchV2`, which is limited to 50 commands, this method automatically splits\n * a large set of commands into multiple batches and executes them sequentially.\n *\n * @template T - The data type returned by commands (default: `unknown`)\n *\n * @param {ActionBatchByChunkV2} options - parameters for executing the request.\n * - `calls: BatchCommandsArrayUniversal | BatchCommandsObjectUniversal` - Commands to execute in a batch.\n * Supports several formats:\n * 1. Array of tuples: `[['method1', params1], ['method2', params2], ...]`\n * 2. Array of objects: `[{ method: 'method1', params: params1 }, { method: 'method2', params: params2 }, ...]`\n * - Note: Named commands are not supported as they are difficult to process when chunking.\n * - `options?: Omit<IB24BatchOptions, 'returnAjaxResult'>` - Additional options for executing a batch request.\n * - `isHaltOnError?: boolean` - Whether to stop execution on the first error (default: true)\n * - `requestId?: string` - Unique request identifier for tracking. Used for query deduplication and debugging (default: undefined)\n *\n * @returns {Promise<Result<T[]>>} A promise that is resolved by the result of executing all commands.\n *\n * @example\n * import { EnumCrmEntityTypeId, Text } from '@bitrix24/b24jssdk'\n *\n * interface Contact { id: number, name: string }\n * const commands = Array.from({ length: 150 }, (_, i) =>\n * ['crm.item.get', { entityTypeId: EnumCrmEntityTypeId.contact, id: i + 1 }]\n * )\n *\n * const response = await b24.actions.v2.batchByChunk.make<{ item: Contact }>({\n * calls: commands,\n * options: {\n * isHaltOnError: false,\n * requestId: 'batch-by-chunk-123'\n * }\n * })\n *\n * if (!response.isSuccess) {\n * throw new Error(`Problem: ${response.getErrorMessages().join('; ')}`)\n * }\n *\n * const resultData = response.getData()\n * const items: Contact[] = []\n * resultData.forEach((chunkRow) => {\n * items.push(chunkRow.item)\n * })\n * console.log(`Successfully retrieved ${items.length} items`)\n *\n * @tip For very large command sets, consider using server-side task queues instead of bulk batch requests.\n */\n public override async make<T = unknown>(options: ActionBatchByChunkV2): Promise<Result<T[]>> {\n const batchSize = 50\n\n const opts = {\n ...options.options,\n returnAjaxResult: false,\n apiVersion: ApiVersion.v2\n }\n\n // callBatchByChunk\n const result = new Result<T[]>()\n\n const dataResult: T[] = []\n const chunks = this.chunkArray(options.calls as BatchCommandsUniversal, batchSize) as BatchCommandsArrayUniversal[] | BatchCommandsObjectUniversal[]\n\n for (const chunkRequest of chunks) {\n const response = await this._b24.getHttpClient(ApiVersion.v2).batch<T[]>(chunkRequest, opts)\n\n if (!response.isSuccess) {\n this._addBatchErrorsIfAny(response, result)\n }\n\n for (const [_index, data] of response.getData()!.result!) {\n // @memo Add only success rows\n if (data.isSuccess) {\n dataResult.push(data.getData()!.result as T)\n }\n }\n }\n\n return result.setData(dataResult)\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAoBO,MAAM,uBAAuB,aAAA,CAAc;AAAA,EApBlD;AAoBkD,IAAA,MAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiDhD,MAAsB,KAAkB,OAAA,EAAqD;AAC3F,IAAA,MAAM,SAAA,GAAY,EAAA;AAElB,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,GAAG,OAAA,CAAQ,OAAA;AAAA,MACX,gBAAA,EAAkB,KAAA;AAAA,MAClB,YAAY,UAAA,CAAW;AAAA,KACzB;AAGA,IAAA,MAAM,MAAA,GAAS,IAAI,MAAA,EAAY;AAE/B,IAAA,MAAM,aAAkB,EAAC;AACzB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,UAAA,CAAW,OAAA,CAAQ,OAAiC,SAAS,CAAA;AAEjF,IAAA,KAAA,MAAW,gBAAgB,MAAA,EAAQ;AACjC,MAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,WAAW,EAAE,CAAA,CAAE,KAAA,CAAW,YAAA,EAAc,IAAI,CAAA;AAE3F,MAAA,IAAI,CAAC,SAAS,SAAA,EAAW;AACvB,QAAA,IAAA,CAAK,oBAAA,CAAqB,UAAU,MAAM,CAAA;AAAA,MAC5C;AAEA,MAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,IAAI,KAAK,QAAA,CAAS,OAAA,GAAW,MAAA,EAAS;AAExD,QAAA,IAAI,KAAK,SAAA,EAAW;AAClB,UAAA,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,OAAA,EAAQ,CAAG,MAAW,CAAA;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAEA,IAAA,OAAO,MAAA,CAAO,QAAQ,UAAU,CAAA;AAAA,EAClC;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-list.mjs","sources":["../../../../../src/core/actions/v2/call-list.ts"],"sourcesContent":["import type { ActionOptions } from '../abstract-action'\nimport type { TypeCallParams } from '../../../types/http'\nimport type { AjaxResult } from '../../http/ajax-result'\nimport { AbstractAction } from '../abstract-action'\nimport { Result } from '../../result'\n\nexport type ActionCallListV2 = ActionOptions & {\n method: string\n params?: Omit<TypeCallParams, 'start'>\n idKey?: string\n customKeyForResult?: string\n requestId?: string\n}\n\n/**\n * Fast data retrieval without counting the total number of records. `restApi:v2`\n *\n * @todo add docs\n */\nexport class CallListV2 extends AbstractAction {\n /**\n * Fast data retrieval without counting the total number of records.\n *\n * @template T - The type of the elements of the returned array (default is `unknown`).\n *\n * @param {ActionCallListV2} options - parameters for executing the request.\n * - `method: string` - The name of the REST API method that returns a list of data (for example: `crm.item.list`, `tasks.task.list`)\n * - `params?: Omit<TypeCallParams, 'start'>` - Request parameters, excluding the `start` parameter,\n * since the method is designed to obtain all data in one call.\n * Note: Use `filter`, `order`, and `select` to control the selection.\n * - `idKey?: string` - The name of the field containing the unique identifier of the element.\n * Default is 'ID' (uppercase). Alternatively, it can be 'id' (lowercase).\n * or another field, depending on the REST API data structure.\n * - `customKeyForResult?: string` - A custom key indicating that the response REST API will be\n * grouped by this field.\n * Example: `items` to group a list of CRM items.\n * - `requestId?: string` - Unique request identifier for tracking. Used for query deduplication and debugging.\n *\n * @returns {Promise<Result<T[]>>} A promise that resolves to the result of an REST API call.\n *\n * @example\n * import { EnumCrmEntityTypeId, Text } from '@bitrix24/b24jssdk'\n *\n * interface CrmItem { id: number, title: string }\n * const sixMonthAgo = new Date()\n * sixMonthAgo.setMonth((new Date()).getMonth() - 6)\n * sixMonthAgo.setHours(0, 0, 0)\n * const response = await b24.actions.v2.callList.make<CrmItem>({\n * method: 'crm.item.list',\n * params: {\n * entityTypeId: EnumCrmEntityTypeId.company,\n * filter: {\n * '=%title': 'A%',\n * '>=createdTime': Text.toB24Format(sixMonthAgo) // created at least 6 months ago\n * },\n * select: ['id', 'title']\n * },\n * idKey: 'id',\n * customKeyForResult: 'items',\n * requestId: 'list-123'\n * })\n * if (!response.isSuccess) {\n * throw new Error(`Problem: ${response.getErrorMessages().join('; ')}`)\n * }\n * const list = response.getData()\n * console.log(`Result: ${list?.length}`) // Number of items received\n */\n public override async make<T = unknown>(options: ActionCallListV2): Promise<Result<T[]>> {\n const batchSize = 50\n const result: Result<T[]> = new Result()\n\n const idKey = options?.idKey ?? 'ID'\n const customKeyForResult = options?.customKeyForResult ?? null\n const params = options?.params ?? {}\n\n const moreIdKey = `>${idKey}`\n const requestParams: TypeCallParams = {\n ...params,\n order: { ...(params['order'] || {}), [idKey]: 'ASC' },\n filter: { ...(params['filter'] || {}), [moreIdKey]: 0 },\n start: -1\n }\n\n let allItems: T[] = []\n let isContinue = true\n\n do {\n const response: AjaxResult<T> = await this._b24.actions.v2.call.make<T>({\n method: options.method,\n params: requestParams,\n requestId: options.requestId\n })\n\n if (!response.isSuccess) {\n this._logger.error('callFastListMethod', {\n method: options.method,\n requestId: options.requestId,\n messages: response.getErrorMessages()\n })\n for (const [index, error] of response.errors) {\n result.addError(error, index)\n }\n isContinue = false\n break\n }\n const responseData = response.getData()\n if (!responseData) {\n isContinue = false\n break\n }\n\n let resultData: T[] = []\n if (null === customKeyForResult) {\n resultData = responseData.result as T[]\n } else {\n resultData = responseData.result[customKeyForResult] as T[]\n }\n\n if (resultData.length === 0) {\n isContinue = false\n break\n }\n\n allItems = [...allItems, ...resultData]\n\n if (resultData.length < batchSize) {\n isContinue = false\n break\n }\n\n // Update the filter for the next iteration\n const lastItem = resultData[resultData.length - 1] as Record<string, any>\n if (\n lastItem\n && typeof lastItem[idKey] !== 'undefined'\n ) {\n requestParams.filter[moreIdKey] = Number.parseInt(lastItem[idKey])\n } else {\n isContinue = false\n break\n }\n } while (isContinue)\n\n return result.setData(allItems)\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAmBO,MAAM,mBAAmB,cAAA,CAAe;AAAA,EAnB/C;AAmB+C,IAAA,MAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgD7C,MAAsB,KAAkB,OAAA,EAAiD;AACvF,IAAA,MAAM,SAAA,GAAY,EAAA;AAClB,IAAA,MAAM,MAAA,GAAsB,IAAI,MAAA,EAAO;AAEvC,IAAA,MAAM,KAAA,GAAQ,SAAS,KAAA,IAAS,IAAA;AAChC,IAAA,MAAM,kBAAA,GAAqB,SAAS,kBAAA,IAAsB,IAAA;AAC1D,IAAA,MAAM,MAAA,GAAS,OAAA,EAAS,MAAA,IAAU,EAAC;AAEnC,IAAA,MAAM,SAAA,GAAY,IAAI,KAAK,CAAA,CAAA;AAC3B,IAAA,MAAM,aAAA,GAAgC;AAAA,MACpC,GAAG,MAAA;AAAA,MACH,KAAA,EAAO,EAAE,GAAI,MAAA,CAAO,OAAO,CAAA,IAAK,EAAC,EAAI,CAAC,KAAK,GAAG,KAAA,EAAM;AAAA,MACpD,MAAA,EAAQ,EAAE,GAAI,MAAA,CAAO,QAAQ,CAAA,IAAK,EAAC,EAAI,CAAC,SAAS,GAAG,CAAA,EAAE;AAAA,MACtD,KAAA,EAAO;AAAA,KACT;AAEA,IAAA,IAAI,WAAgB,EAAC;AACrB,IAAA,IAAI,UAAA,GAAa,IAAA;AAEjB,IAAA,GAAG;AACD,MAAA,MAAM,WAA0B,MAAM,IAAA,CAAK,KAAK,OAAA,CAAQ,EAAA,CAAG,KAAK,IAAA,CAAQ;AAAA,QACtE,QAAQ,OAAA,CAAQ,MAAA;AAAA,QAChB,MAAA,EAAQ,aAAA;AAAA,QACR,WAAW,OAAA,CAAQ;AAAA,OACpB,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,SAAA,EAAW;AACvB,QAAA,IAAA,CAAK,OAAA,CAAQ,MAAM,oBAAA,EAAsB;AAAA,UACvC,QAAQ,OAAA,CAAQ,MAAA;AAAA,UAChB,WAAW,OAAA,CAAQ,SAAA;AAAA,UACnB,QAAA,EAAU,SAAS,gBAAA;AAAiB,SACrC,CAAA;AACD,QAAA,KAAA,MAAW,CAAC,KAAA,EAAO,KAAK,CAAA,IAAK,SAAS,MAAA,EAAQ;AAC5C,UAAA,MAAA,CAAO,QAAA,CAAS,OAAO,KAAK,CAAA;AAAA,QAC9B;AACA,QAAA,UAAA,GAAa,KAAA;AACb,QAAA;AAAA,MACF;AACA,MAAA,MAAM,YAAA,GAAe,SAAS,OAAA,EAAQ;AACtC,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,UAAA,GAAa,KAAA;AACb,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,aAAkB,EAAC;AACvB,MAAA,IAAI,SAAS,kBAAA,EAAoB;AAC/B,QAAA,UAAA,GAAa,YAAA,CAAa,MAAA;AAAA,MAC5B,CAAA,MAAO;AACL,QAAA,UAAA,
|
|
1
|
+
{"version":3,"file":"call-list.mjs","sources":["../../../../../src/core/actions/v2/call-list.ts"],"sourcesContent":["import type { ActionOptions } from '../abstract-action'\nimport type { TypeCallParams } from '../../../types/http'\nimport type { AjaxResult } from '../../http/ajax-result'\nimport { AbstractAction } from '../abstract-action'\nimport { Result } from '../../result'\n\nexport type ActionCallListV2 = ActionOptions & {\n method: string\n params?: Omit<TypeCallParams, 'start'>\n idKey?: string\n customKeyForResult?: string\n requestId?: string\n}\n\n/**\n * Fast data retrieval without counting the total number of records. `restApi:v2`\n *\n * @todo add docs\n */\nexport class CallListV2 extends AbstractAction {\n /**\n * Fast data retrieval without counting the total number of records.\n *\n * @template T - The type of the elements of the returned array (default is `unknown`).\n *\n * @param {ActionCallListV2} options - parameters for executing the request.\n * - `method: string` - The name of the REST API method that returns a list of data (for example: `crm.item.list`, `tasks.task.list`)\n * - `params?: Omit<TypeCallParams, 'start'>` - Request parameters, excluding the `start` parameter,\n * since the method is designed to obtain all data in one call.\n * Note: Use `filter`, `order`, and `select` to control the selection.\n * - `idKey?: string` - The name of the field containing the unique identifier of the element.\n * Default is 'ID' (uppercase). Alternatively, it can be 'id' (lowercase).\n * or another field, depending on the REST API data structure.\n * - `customKeyForResult?: string` - A custom key indicating that the response REST API will be\n * grouped by this field.\n * Example: `items` to group a list of CRM items.\n * - `requestId?: string` - Unique request identifier for tracking. Used for query deduplication and debugging.\n *\n * @returns {Promise<Result<T[]>>} A promise that resolves to the result of an REST API call.\n *\n * @example\n * import { EnumCrmEntityTypeId, Text } from '@bitrix24/b24jssdk'\n *\n * interface CrmItem { id: number, title: string }\n * const sixMonthAgo = new Date()\n * sixMonthAgo.setMonth((new Date()).getMonth() - 6)\n * sixMonthAgo.setHours(0, 0, 0)\n * const response = await b24.actions.v2.callList.make<CrmItem>({\n * method: 'crm.item.list',\n * params: {\n * entityTypeId: EnumCrmEntityTypeId.company,\n * filter: {\n * '=%title': 'A%',\n * '>=createdTime': Text.toB24Format(sixMonthAgo) // created at least 6 months ago\n * },\n * select: ['id', 'title']\n * },\n * idKey: 'id',\n * customKeyForResult: 'items',\n * requestId: 'list-123'\n * })\n * if (!response.isSuccess) {\n * throw new Error(`Problem: ${response.getErrorMessages().join('; ')}`)\n * }\n * const list = response.getData()\n * console.log(`Result: ${list?.length}`) // Number of items received\n */\n public override async make<T = unknown>(options: ActionCallListV2): Promise<Result<T[]>> {\n const batchSize = 50\n const result: Result<T[]> = new Result()\n\n const idKey = options?.idKey ?? 'ID'\n const customKeyForResult = options?.customKeyForResult ?? null\n const params = options?.params ?? {}\n\n const moreIdKey = `>${idKey}`\n const requestParams: TypeCallParams = {\n ...params,\n order: { ...(params['order'] || {}), [idKey]: 'ASC' },\n filter: { ...(params['filter'] || {}), [moreIdKey]: 0 },\n start: -1\n }\n\n let allItems: T[] = []\n let isContinue = true\n\n do {\n const response: AjaxResult<T> = await this._b24.actions.v2.call.make<T>({\n method: options.method,\n params: requestParams,\n requestId: options.requestId\n })\n\n if (!response.isSuccess) {\n this._logger.error('callFastListMethod', {\n method: options.method,\n requestId: options.requestId,\n messages: response.getErrorMessages()\n })\n for (const [index, error] of response.errors) {\n result.addError(error, index)\n }\n isContinue = false\n break\n }\n const responseData = response.getData()\n if (!responseData) {\n isContinue = false\n break\n }\n\n let resultData: T[] = []\n if (null === customKeyForResult) {\n resultData = responseData.result as T[]\n } else {\n resultData = (responseData.result as any)[customKeyForResult] as T[]\n }\n\n if (resultData.length === 0) {\n isContinue = false\n break\n }\n\n allItems = [...allItems, ...resultData]\n\n if (resultData.length < batchSize) {\n isContinue = false\n break\n }\n\n // Update the filter for the next iteration\n const lastItem = resultData[resultData.length - 1] as Record<string, any>\n if (\n lastItem\n && typeof lastItem[idKey] !== 'undefined'\n ) {\n requestParams.filter[moreIdKey] = Number.parseInt(lastItem[idKey])\n } else {\n isContinue = false\n break\n }\n } while (isContinue)\n\n return result.setData(allItems)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-list.mjs","sources":["../../../../../src/core/actions/v2/fetch-list.ts"],"sourcesContent":["import type { ActionOptions } from '../abstract-action'\nimport type { TypeCallParams } from '../../../types/http'\nimport type { AjaxResult } from '../../http/ajax-result'\nimport { AbstractAction } from '../abstract-action'\nimport { SdkError } from '../../sdk-error'\n\nexport type ActionFetchListV2 = ActionOptions & {\n method: string\n params?: Omit<TypeCallParams, 'start'>\n idKey?: string\n customKeyForResult?: string\n requestId?: string\n}\n\n/**\n * Calls a REST API list method and returns an async generator for efficient large data retrieval. `restApi:v2`\n *\n * @todo add docs\n */\nexport class FetchListV2 extends AbstractAction {\n /**\n * Calls a REST API list method and returns an async generator for efficient large data retrieval.\n * Implements the fast algorithm for iterating over large datasets without loading all data into memory at once.\n *\n * @template T - The type of items in the returned arrays (default is `unknown`).\n *\n * @param {ActionFetchListV2} options - parameters for executing the request.\n * - `method: string` - The name of the REST API method that returns a list of data (for example: `crm.item.list`, `tasks.task.list`)\n * - `params?: Omit<TypeCallParams, 'start'>` - Request parameters, excluding the `start` parameter,\n * since the method is designed to obtain all data in one call.\n * Note: Use `filter`, `order`, and `select` to control the selection.\n * - `idKey?: string` - The name of the field containing the unique identifier of the element.\n * Default is 'ID' (uppercase). Alternatively, it can be 'id' (lowercase).\n * or another field, depending on the REST API data structure.\n * - `customKeyForResult?: string` - A custom key indicating that the response REST API will be\n * grouped by this field.\n * Example: `items` to group a list of CRM items.\n * - `requestId?: string` - Unique request identifier for tracking. Used for query deduplication and debugging.\n *\n * @returns {AsyncGenerator<T[]>} An async generator that yields chunks of data as arrays of type `T`.\n * Each iteration returns the next page/batch of results until all data is fetched.\n *\n * @example\n * import { EnumCrmEntityTypeId, Text } from '@bitrix24/b24jssdk'\n *\n * interface CrmItem { id: number, title: string }\n * const sixMonthAgo = new Date()\n * sixMonthAgo.setMonth((new Date()).getMonth() - 6)\n * sixMonthAgo.setHours(0, 0, 0)\n * const generator = b24.actions.v2.fetchList.make<CrmItem>({\n * method: 'crm.item.list',\n * params: {\n * entityTypeId: EnumCrmEntityTypeId.company,\n * filter: {\n * '=%title': 'A%',\n * '>=createdTime': Text.toB24Format(sixMonthAgo) // created at least 6 months ago\n * },\n * select: ['id', 'title']\n * },\n * idKey: 'id',\n * customKeyForResult: 'items',\n * requestId: 'list-123'\n * })\n *\n * for await (const chunk of generator) {\n * // Process chunk (e.g., save to database, analyze, etc.)\n * console.log(`Processing ${chunk.length} items`)\n * }\n *\n * @see {@link https://apidocs.bitrix24.com/settings/performance/huge-data.html Bitrix24: Fast algorithm for large data}\n */\n public override async* make<T = unknown>(options: ActionFetchListV2): AsyncGenerator<T[]> {\n const batchSize = 50\n\n const idKey = options?.idKey ?? 'ID'\n const customKeyForResult = options?.customKeyForResult ?? null\n const params = options?.params ?? {}\n\n const moreIdKey = `>${idKey}`\n const requestParams: TypeCallParams = {\n ...params,\n order: { ...(params['order'] || {}), [idKey]: 'ASC' },\n filter: { ...(params['filter'] || {}), [moreIdKey]: 0 },\n start: -1\n }\n\n let isContinue = true\n\n do {\n const response: AjaxResult<T> = await this._b24.actions.v2.call.make<T>({\n method: options.method,\n params: requestParams,\n requestId: options.requestId\n })\n\n if (!response.isSuccess) {\n this._logger.error('fetchListMethod', {\n method: options.method,\n requestId: options.requestId,\n messages: response.getErrorMessages()\n })\n throw new SdkError({\n code: 'JSSDK_CORE_B24_FETCH_LIST_METHOD_API_V2',\n description: `API Error: ${response.getErrorMessages().join('; ')}`,\n status: 500\n })\n }\n const responseData = response.getData()\n if (!responseData) {\n isContinue = false\n break\n }\n\n let resultData: T[] = []\n if (null === customKeyForResult) {\n resultData = responseData.result as T[]\n } else {\n resultData = responseData.result[customKeyForResult] as T[]\n }\n\n if (resultData.length === 0) {\n isContinue = false\n break\n }\n\n yield resultData\n\n if (resultData.length < batchSize) {\n isContinue = false\n break\n }\n\n // Update the filter for the next iteration\n const lastItem = resultData[resultData.length - 1] as Record<string, any>\n if (\n lastItem\n && typeof lastItem[idKey] !== 'undefined'\n ) {\n requestParams.filter[moreIdKey] = Number.parseInt(lastItem[idKey])\n } else {\n isContinue = false\n break\n }\n } while (isContinue)\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAmBO,MAAM,oBAAoB,cAAA,CAAe;AAAA,EAnBhD;AAmBgD,IAAA,MAAA,CAAA,IAAA,EAAA,aAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoD9C,OAAuB,KAAkB,OAAA,EAAiD;AACxF,IAAA,MAAM,SAAA,GAAY,EAAA;AAElB,IAAA,MAAM,KAAA,GAAQ,SAAS,KAAA,IAAS,IAAA;AAChC,IAAA,MAAM,kBAAA,GAAqB,SAAS,kBAAA,IAAsB,IAAA;AAC1D,IAAA,MAAM,MAAA,GAAS,OAAA,EAAS,MAAA,IAAU,EAAC;AAEnC,IAAA,MAAM,SAAA,GAAY,IAAI,KAAK,CAAA,CAAA;AAC3B,IAAA,MAAM,aAAA,GAAgC;AAAA,MACpC,GAAG,MAAA;AAAA,MACH,KAAA,EAAO,EAAE,GAAI,MAAA,CAAO,OAAO,CAAA,IAAK,EAAC,EAAI,CAAC,KAAK,GAAG,KAAA,EAAM;AAAA,MACpD,MAAA,EAAQ,EAAE,GAAI,MAAA,CAAO,QAAQ,CAAA,IAAK,EAAC,EAAI,CAAC,SAAS,GAAG,CAAA,EAAE;AAAA,MACtD,KAAA,EAAO;AAAA,KACT;AAEA,IAAA,IAAI,UAAA,GAAa,IAAA;AAEjB,IAAA,GAAG;AACD,MAAA,MAAM,WAA0B,MAAM,IAAA,CAAK,KAAK,OAAA,CAAQ,EAAA,CAAG,KAAK,IAAA,CAAQ;AAAA,QACtE,QAAQ,OAAA,CAAQ,MAAA;AAAA,QAChB,MAAA,EAAQ,aAAA;AAAA,QACR,WAAW,OAAA,CAAQ;AAAA,OACpB,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,SAAA,EAAW;AACvB,QAAA,IAAA,CAAK,OAAA,CAAQ,MAAM,iBAAA,EAAmB;AAAA,UACpC,QAAQ,OAAA,CAAQ,MAAA;AAAA,UAChB,WAAW,OAAA,CAAQ,SAAA;AAAA,UACnB,QAAA,EAAU,SAAS,gBAAA;AAAiB,SACrC,CAAA;AACD,QAAA,MAAM,IAAI,QAAA,CAAS;AAAA,UACjB,IAAA,EAAM,yCAAA;AAAA,UACN,aAAa,CAAA,WAAA,EAAc,QAAA,CAAS,kBAAiB,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,UACjE,MAAA,EAAQ;AAAA,SACT,CAAA;AAAA,MACH;AACA,MAAA,MAAM,YAAA,GAAe,SAAS,OAAA,EAAQ;AACtC,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,UAAA,GAAa,KAAA;AACb,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,aAAkB,EAAC;AACvB,MAAA,IAAI,SAAS,kBAAA,EAAoB;AAC/B,QAAA,UAAA,GAAa,YAAA,CAAa,MAAA;AAAA,MAC5B,CAAA,MAAO;AACL,QAAA,UAAA,
|
|
1
|
+
{"version":3,"file":"fetch-list.mjs","sources":["../../../../../src/core/actions/v2/fetch-list.ts"],"sourcesContent":["import type { ActionOptions } from '../abstract-action'\nimport type { TypeCallParams } from '../../../types/http'\nimport type { AjaxResult } from '../../http/ajax-result'\nimport { AbstractAction } from '../abstract-action'\nimport { SdkError } from '../../sdk-error'\n\nexport type ActionFetchListV2 = ActionOptions & {\n method: string\n params?: Omit<TypeCallParams, 'start'>\n idKey?: string\n customKeyForResult?: string\n requestId?: string\n}\n\n/**\n * Calls a REST API list method and returns an async generator for efficient large data retrieval. `restApi:v2`\n *\n * @todo add docs\n */\nexport class FetchListV2 extends AbstractAction {\n /**\n * Calls a REST API list method and returns an async generator for efficient large data retrieval.\n * Implements the fast algorithm for iterating over large datasets without loading all data into memory at once.\n *\n * @template T - The type of items in the returned arrays (default is `unknown`).\n *\n * @param {ActionFetchListV2} options - parameters for executing the request.\n * - `method: string` - The name of the REST API method that returns a list of data (for example: `crm.item.list`, `tasks.task.list`)\n * - `params?: Omit<TypeCallParams, 'start'>` - Request parameters, excluding the `start` parameter,\n * since the method is designed to obtain all data in one call.\n * Note: Use `filter`, `order`, and `select` to control the selection.\n * - `idKey?: string` - The name of the field containing the unique identifier of the element.\n * Default is 'ID' (uppercase). Alternatively, it can be 'id' (lowercase).\n * or another field, depending on the REST API data structure.\n * - `customKeyForResult?: string` - A custom key indicating that the response REST API will be\n * grouped by this field.\n * Example: `items` to group a list of CRM items.\n * - `requestId?: string` - Unique request identifier for tracking. Used for query deduplication and debugging.\n *\n * @returns {AsyncGenerator<T[]>} An async generator that yields chunks of data as arrays of type `T`.\n * Each iteration returns the next page/batch of results until all data is fetched.\n *\n * @example\n * import { EnumCrmEntityTypeId, Text } from '@bitrix24/b24jssdk'\n *\n * interface CrmItem { id: number, title: string }\n * const sixMonthAgo = new Date()\n * sixMonthAgo.setMonth((new Date()).getMonth() - 6)\n * sixMonthAgo.setHours(0, 0, 0)\n * const generator = b24.actions.v2.fetchList.make<CrmItem>({\n * method: 'crm.item.list',\n * params: {\n * entityTypeId: EnumCrmEntityTypeId.company,\n * filter: {\n * '=%title': 'A%',\n * '>=createdTime': Text.toB24Format(sixMonthAgo) // created at least 6 months ago\n * },\n * select: ['id', 'title']\n * },\n * idKey: 'id',\n * customKeyForResult: 'items',\n * requestId: 'list-123'\n * })\n *\n * for await (const chunk of generator) {\n * // Process chunk (e.g., save to database, analyze, etc.)\n * console.log(`Processing ${chunk.length} items`)\n * }\n *\n * @see {@link https://apidocs.bitrix24.com/settings/performance/huge-data.html Bitrix24: Fast algorithm for large data}\n */\n public override async* make<T = unknown>(options: ActionFetchListV2): AsyncGenerator<T[]> {\n const batchSize = 50\n\n const idKey = options?.idKey ?? 'ID'\n const customKeyForResult = options?.customKeyForResult ?? null\n const params = options?.params ?? {}\n\n const moreIdKey = `>${idKey}`\n const requestParams: TypeCallParams = {\n ...params,\n order: { ...(params['order'] || {}), [idKey]: 'ASC' },\n filter: { ...(params['filter'] || {}), [moreIdKey]: 0 },\n start: -1\n }\n\n let isContinue = true\n\n do {\n const response: AjaxResult<T> = await this._b24.actions.v2.call.make<T>({\n method: options.method,\n params: requestParams,\n requestId: options.requestId\n })\n\n if (!response.isSuccess) {\n this._logger.error('fetchListMethod', {\n method: options.method,\n requestId: options.requestId,\n messages: response.getErrorMessages()\n })\n throw new SdkError({\n code: 'JSSDK_CORE_B24_FETCH_LIST_METHOD_API_V2',\n description: `API Error: ${response.getErrorMessages().join('; ')}`,\n status: 500\n })\n }\n const responseData = response.getData()\n if (!responseData) {\n isContinue = false\n break\n }\n\n let resultData: T[] = []\n if (null === customKeyForResult) {\n resultData = responseData.result as T[]\n } else {\n resultData = (responseData.result as any)[customKeyForResult] as T[]\n }\n\n if (resultData.length === 0) {\n isContinue = false\n break\n }\n\n yield resultData\n\n if (resultData.length < batchSize) {\n isContinue = false\n break\n }\n\n // Update the filter for the next iteration\n const lastItem = resultData[resultData.length - 1] as Record<string, any>\n if (\n lastItem\n && typeof lastItem[idKey] !== 'undefined'\n ) {\n requestParams.filter[moreIdKey] = Number.parseInt(lastItem[idKey])\n } else {\n isContinue = false\n break\n }\n } while (isContinue)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-by-chunk.mjs","sources":["../../../../../src/core/actions/v3/batch-by-chunk.ts"],"sourcesContent":["import type { ActionOptions } from '../abstract-action'\nimport type {\n BatchCommandsArrayUniversal,\n BatchCommandsObjectUniversal, BatchCommandsUniversal\n} from '../../../types/http'\nimport type { IB24BatchOptions } from '../../../types/b24'\nimport { AbstractBatch } from '../abstract-batch'\nimport { ApiVersion } from '../../../types/b24'\nimport { Result } from '../../result'\n\nexport type ActionBatchByChunkV3 = ActionOptions & {\n calls: BatchCommandsArrayUniversal | BatchCommandsObjectUniversal\n options?: Omit<IB24BatchOptions, 'returnAjaxResult'>\n}\n\n/**\n * Executes a batch request with automatic chunking for any number of commands. `restApi:v3`\n *\n * @todo add docs\n
|
|
1
|
+
{"version":3,"file":"batch-by-chunk.mjs","sources":["../../../../../src/core/actions/v3/batch-by-chunk.ts"],"sourcesContent":["import type { ActionOptions } from '../abstract-action'\nimport type {\n BatchCommandsArrayUniversal,\n BatchCommandsObjectUniversal, BatchCommandsUniversal\n} from '../../../types/http'\nimport type { IB24BatchOptions } from '../../../types/b24'\nimport { AbstractBatch } from '../abstract-batch'\nimport { ApiVersion } from '../../../types/b24'\nimport { Result } from '../../result'\n\nexport type ActionBatchByChunkV3 = ActionOptions & {\n calls: BatchCommandsArrayUniversal | BatchCommandsObjectUniversal\n options?: Omit<IB24BatchOptions, 'returnAjaxResult'>\n}\n\n/**\n * Executes a batch request with automatic chunking for any number of commands. `restApi:v3`\n *\n * @todo add docs\n */\nexport class BatchByChunkV3 extends AbstractBatch {\n /**\n * Executes a batch request with automatic chunking for any number of commands.\n * Unlike `BatchV3`, which is limited to 50 commands, this method automatically splits\n * a large set of commands into multiple batches and executes them sequentially.\n *\n * @template T - The data type returned by commands (default: `unknown`)\n *\n * @param {ActionBatchByChunkV3} options - parameters for executing the request.\n * - `calls: BatchCommandsArrayUniversal | BatchCommandsObjectUniversal` - Commands to execute in a batch.\n * Supports several formats:\n * 1. Array of tuples: `[['method1', params1], ['method2', params2], ...]`\n * 2. Array of objects: `[{ method: 'method1', params: params1 }, { method: 'method2', params: params2 }, ...]`\n * - Note: Named commands are not supported as they are difficult to process when chunking.\n * - `options?: Omit<IB24BatchOptions, 'returnAjaxResult'>` - Additional options for executing a batch request.\n * - `isHaltOnError?: boolean` - Whether to stop execution on the first error (default: true)\n * - `requestId?: string` - Unique request identifier for tracking. Used for query deduplication and debugging (default: undefined)\n *\n * @returns {Promise<Result<T[]>>} A promise that is resolved by the result of executing all commands.\n *\n * @example\n * interface TaskItem { id: number, title: string }\n * const commands: BatchCommandsArrayUniversal = Array.from({ length: 150 }, (_, i) =>\n * ['tasks.task.get', { id: i + 1, select: ['id', 'title'] }]\n * )\n *\n * const response = await b24.actions.v3.batchByChunk.make<{ item: TaskItem }>({\n * calls: commands,\n * options: {\n * isHaltOnError: false,\n * requestId: 'batch-by-chunk-123'\n * }\n * })\n *\n * if (!response.isSuccess) {\n * throw new Error(`Problem: ${response.getErrorMessages().join('; ')}`)\n * }\n *\n * const resultData = response.getData()\n * const items: TaskItem[] = []\n * resultData.forEach((chunkRow) => {\n * items.push(chunkRow.item)\n * })\n * console.log(`Successfully retrieved ${items.length} items`)\n *\n * @tip For very large command sets, consider using server-side task queues instead of bulk batch requests.\n */\n public override async make<T = unknown>(options: ActionBatchByChunkV3): Promise<Result<T[]>> {\n const batchSize = 50\n\n const opts = {\n ...options.options,\n returnAjaxResult: false,\n apiVersion: ApiVersion.v3\n }\n\n // callBatchByChunk\n const result = new Result<T[]>()\n\n const dataResult: T[] = []\n const chunks = this.chunkArray(options.calls as BatchCommandsUniversal, batchSize) as BatchCommandsArrayUniversal[] | BatchCommandsObjectUniversal[]\n\n for (const chunkRequest of chunks) {\n const response = await this._b24.getHttpClient(ApiVersion.v3).batch<T[]>(chunkRequest, opts)\n\n if (!response.isSuccess) {\n this._addBatchErrorsIfAny(response, result)\n }\n\n for (const [_index, data] of response.getData()!.result!) {\n // @memo Add only success rows\n if (data.isSuccess) {\n dataResult.push(data.getData()!.result as T)\n }\n }\n }\n\n return result.setData(dataResult)\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAoBO,MAAM,uBAAuB,aAAA,CAAc;AAAA,EApBlD;AAoBkD,IAAA,MAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA+ChD,MAAsB,KAAkB,OAAA,EAAqD;AAC3F,IAAA,MAAM,SAAA,GAAY,EAAA;AAElB,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,GAAG,OAAA,CAAQ,OAAA;AAAA,MACX,gBAAA,EAAkB,KAAA;AAAA,MAClB,YAAY,UAAA,CAAW;AAAA,KACzB;AAGA,IAAA,MAAM,MAAA,GAAS,IAAI,MAAA,EAAY;AAE/B,IAAA,MAAM,aAAkB,EAAC;AACzB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,UAAA,CAAW,OAAA,CAAQ,OAAiC,SAAS,CAAA;AAEjF,IAAA,KAAA,MAAW,gBAAgB,MAAA,EAAQ;AACjC,MAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,WAAW,EAAE,CAAA,CAAE,KAAA,CAAW,YAAA,EAAc,IAAI,CAAA;AAE3F,MAAA,IAAI,CAAC,SAAS,SAAA,EAAW;AACvB,QAAA,IAAA,CAAK,oBAAA,CAAqB,UAAU,MAAM,CAAA;AAAA,MAC5C;AAEA,MAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,IAAI,KAAK,QAAA,CAAS,OAAA,GAAW,MAAA,EAAS;AAExD,QAAA,IAAI,KAAK,SAAA,EAAW;AAClB,UAAA,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,OAAA,EAAQ,CAAG,MAAW,CAAA;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAEA,IAAA,OAAO,MAAA,CAAO,QAAQ,UAAU,CAAA;AAAA,EAClC;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-list.mjs","sources":["../../../../../src/core/actions/v3/call-list.ts"],"sourcesContent":["import type { ActionOptions } from '../abstract-action'\nimport type { TypeCallParams } from '../../../types/http'\nimport type { AjaxResult } from '../../http/ajax-result'\nimport { AbstractAction } from '../abstract-action'\nimport { Result } from '../../result'\n\nexport type ActionCallListV3 = ActionOptions & {\n method: string\n params?: Omit<TypeCallParams, 'pagination'>\n idKey?: string\n customKeyForResult: string\n requestId?: string\n limit?: number\n}\n\n/**\n * Fast data retrieval without counting the total number of records. `restApi:v3`\n *\n * @todo add docs\n */\nexport class CallListV3 extends AbstractAction {\n /**\n * Fast data retrieval without counting the total number of records.\n *\n * @template T - The type of the elements of the returned array (default is `unknown`).\n *\n * @param {ActionCallListV3} options - parameters for executing the request.\n * - `method: string` - The name of the REST API method that returns a list of data (for example: `crm.item.list`, `tasks.task.list`)\n * - `params?: Omit<TypeCallParams, 'pagination'>` - Request parameters, excluding the `pagination` parameter,\n * since the method is designed to obtain all data in one call.\n * Note: Use `filter`, `order`, and `select` to control the selection.\n * - `idKey?: string` - The name of the field containing the unique identifier of the element.\n * Default is 'id'. Alternatively, it can be another field, depending on the REST API data structure.\n * - `customKeyForResult: string` - A custom key indicating that the response REST API will be\n * grouped by this field.\n * Example: `items` to group a list of CRM items.\n * - `requestId?: string` - Unique request identifier for tracking. Used for query deduplication and debugging.\n * - `limit?: number` - How many records to retrieve at a time. Default is `50`. Maximum is `1000`.\n *\n * @returns {Promise<Result<T[]>>} A promise that resolves to the result of an REST API call.\n *\n * @example\n * import { Text } from '@bitrix24/b24jssdk'\n *\n * interface MainEventLogItem { id: number, userId: number }\n * const sixMonthAgo = new Date()\n * sixMonthAgo.setMonth((new Date()).getMonth() - 6)\n * sixMonthAgo.setHours(0, 0, 0)\n * const response = await b24.actions.v3.callList.make<MainEventLogItem>({\n * method: 'main.eventlog.list',\n * params: {\n * filter: [\n * ['timestampX', '>=', Text.toB24Format(sixMonthAgo)] // created at least 6 months ago\n * ],\n * select: ['id', 'userId']\n * },\n * idKey: 'id',\n * customKeyForResult: 'items',\n * requestId: 'eventlog-123',\n * limit: 60\n * })\n * if (!response.isSuccess) {\n * throw new Error(`Problem: ${response.getErrorMessages().join('; ')}`)\n * }\n * const list = response.getData()\n * console.log(`Result: ${list?.length}`) // Number of items received\n */\n public override async make<T = unknown>(options: ActionCallListV3): Promise<Result<T[]>> {\n const batchSize = options?.limit ?? 50\n const result: Result<T[]> = new Result()\n\n const idKey = options?.idKey ?? 'id'\n const customKeyForResult = options?.customKeyForResult ?? null\n const params = options?.params ?? {}\n\n const requestParams: TypeCallParams = {\n ...params,\n order: { ...(params['order'] || {}), [idKey]: 'ASC' },\n filter: [...(params['filter'] || [])],\n pagination: { page: 0, limit: batchSize }\n }\n\n let allItems: T[] = []\n let isContinue = true\n let nextId = 0\n do {\n const sendParams = { ...requestParams }\n sendParams.filter.push([idKey, '>', nextId])\n const response: AjaxResult<T> = await this._b24.actions.v3.call.make<T>({\n method: options.method,\n params: requestParams,\n requestId: options.requestId\n })\n\n if (!response.isSuccess) {\n this._logger.error('callFastListMethod', {\n method: options.method,\n requestId: options.requestId,\n messages: response.getErrorMessages()\n })\n for (const [index, error] of response.errors) {\n result.addError(error, index)\n }\n isContinue = false\n break\n }\n const responseData = response.getData()\n if (!responseData) {\n isContinue = false\n break\n }\n\n const resultData = responseData.result[customKeyForResult] as T[]\n if (resultData.length === 0) {\n isContinue = false\n break\n }\n\n allItems = [...allItems, ...resultData]\n\n if (resultData.length < batchSize) {\n isContinue = false\n break\n }\n\n // Update the filter for the next iteration\n const lastItem = resultData[resultData.length - 1] as Record<string, any>\n if (lastItem && typeof lastItem[idKey] !== 'undefined') {\n nextId = Number.parseInt(lastItem[idKey] as string)\n } else {\n isContinue = false\n break\n }\n } while (isContinue)\n\n return result.setData(allItems)\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAoBO,MAAM,mBAAmB,cAAA,CAAe;AAAA,EApB/C;AAoB+C,IAAA,MAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA+C7C,MAAsB,KAAkB,OAAA,EAAiD;AACvF,IAAA,MAAM,SAAA,GAAY,SAAS,KAAA,IAAS,EAAA;AACpC,IAAA,MAAM,MAAA,GAAsB,IAAI,MAAA,EAAO;AAEvC,IAAA,MAAM,KAAA,GAAQ,SAAS,KAAA,IAAS,IAAA;AAChC,IAAA,MAAM,kBAAA,GAAqB,SAAS,kBAAA,IAAsB,IAAA;AAC1D,IAAA,MAAM,MAAA,GAAS,OAAA,EAAS,MAAA,IAAU,EAAC;AAEnC,IAAA,MAAM,aAAA,GAAgC;AAAA,MACpC,GAAG,MAAA;AAAA,MACH,KAAA,EAAO,EAAE,GAAI,MAAA,CAAO,OAAO,CAAA,IAAK,EAAC,EAAI,CAAC,KAAK,GAAG,KAAA,EAAM;AAAA,MACpD,QAAQ,CAAC,GAAI,OAAO,QAAQ,CAAA,IAAK,EAAG,CAAA;AAAA,MACpC,UAAA,EAAY,EAAE,IAAA,EAAM,CAAA,EAAG,OAAO,SAAA;AAAU,KAC1C;AAEA,IAAA,IAAI,WAAgB,EAAC;AACrB,IAAA,IAAI,UAAA,GAAa,IAAA;AACjB,IAAA,IAAI,MAAA,GAAS,CAAA;AACb,IAAA,GAAG;AACD,MAAA,MAAM,UAAA,GAAa,EAAE,GAAG,aAAA,EAAc;AACtC,MAAA,UAAA,CAAW,OAAO,IAAA,CAAK,CAAC,KAAA,EAAO,GAAA,EAAK,MAAM,CAAC,CAAA;AAC3C,MAAA,MAAM,WAA0B,MAAM,IAAA,CAAK,KAAK,OAAA,CAAQ,EAAA,CAAG,KAAK,IAAA,CAAQ;AAAA,QACtE,QAAQ,OAAA,CAAQ,MAAA;AAAA,QAChB,MAAA,EAAQ,aAAA;AAAA,QACR,WAAW,OAAA,CAAQ;AAAA,OACpB,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,SAAA,EAAW;AACvB,QAAA,IAAA,CAAK,OAAA,CAAQ,MAAM,oBAAA,EAAsB;AAAA,UACvC,QAAQ,OAAA,CAAQ,MAAA;AAAA,UAChB,WAAW,OAAA,CAAQ,SAAA;AAAA,UACnB,QAAA,EAAU,SAAS,gBAAA;AAAiB,SACrC,CAAA;AACD,QAAA,KAAA,MAAW,CAAC,KAAA,EAAO,KAAK,CAAA,IAAK,SAAS,MAAA,EAAQ;AAC5C,UAAA,MAAA,CAAO,QAAA,CAAS,OAAO,KAAK,CAAA;AAAA,QAC9B;AACA,QAAA,UAAA,GAAa,KAAA;AACb,QAAA;AAAA,MACF;AACA,MAAA,MAAM,YAAA,GAAe,SAAS,OAAA,EAAQ;AACtC,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,UAAA,GAAa,KAAA;AACb,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,UAAA,
|
|
1
|
+
{"version":3,"file":"call-list.mjs","sources":["../../../../../src/core/actions/v3/call-list.ts"],"sourcesContent":["import type { ActionOptions } from '../abstract-action'\nimport type { TypeCallParams } from '../../../types/http'\nimport type { AjaxResult } from '../../http/ajax-result'\nimport { AbstractAction } from '../abstract-action'\nimport { Result } from '../../result'\n\nexport type ActionCallListV3 = ActionOptions & {\n method: string\n params?: Omit<TypeCallParams, 'pagination'>\n idKey?: string\n customKeyForResult: string\n requestId?: string\n limit?: number\n}\n\n/**\n * Fast data retrieval without counting the total number of records. `restApi:v3`\n *\n * @todo add docs\n */\nexport class CallListV3 extends AbstractAction {\n /**\n * Fast data retrieval without counting the total number of records.\n *\n * @template T - The type of the elements of the returned array (default is `unknown`).\n *\n * @param {ActionCallListV3} options - parameters for executing the request.\n * - `method: string` - The name of the REST API method that returns a list of data (for example: `crm.item.list`, `tasks.task.list`)\n * - `params?: Omit<TypeCallParams, 'pagination'>` - Request parameters, excluding the `pagination` parameter,\n * since the method is designed to obtain all data in one call.\n * Note: Use `filter`, `order`, and `select` to control the selection.\n * - `idKey?: string` - The name of the field containing the unique identifier of the element.\n * Default is 'id'. Alternatively, it can be another field, depending on the REST API data structure.\n * - `customKeyForResult: string` - A custom key indicating that the response REST API will be\n * grouped by this field.\n * Example: `items` to group a list of CRM items.\n * - `requestId?: string` - Unique request identifier for tracking. Used for query deduplication and debugging.\n * - `limit?: number` - How many records to retrieve at a time. Default is `50`. Maximum is `1000`.\n *\n * @returns {Promise<Result<T[]>>} A promise that resolves to the result of an REST API call.\n *\n * @example\n * import { Text } from '@bitrix24/b24jssdk'\n *\n * interface MainEventLogItem { id: number, userId: number }\n * const sixMonthAgo = new Date()\n * sixMonthAgo.setMonth((new Date()).getMonth() - 6)\n * sixMonthAgo.setHours(0, 0, 0)\n * const response = await b24.actions.v3.callList.make<MainEventLogItem>({\n * method: 'main.eventlog.list',\n * params: {\n * filter: [\n * ['timestampX', '>=', Text.toB24Format(sixMonthAgo)] // created at least 6 months ago\n * ],\n * select: ['id', 'userId']\n * },\n * idKey: 'id',\n * customKeyForResult: 'items',\n * requestId: 'eventlog-123',\n * limit: 60\n * })\n * if (!response.isSuccess) {\n * throw new Error(`Problem: ${response.getErrorMessages().join('; ')}`)\n * }\n * const list = response.getData()\n * console.log(`Result: ${list?.length}`) // Number of items received\n */\n public override async make<T = unknown>(options: ActionCallListV3): Promise<Result<T[]>> {\n const batchSize = options?.limit ?? 50\n const result: Result<T[]> = new Result()\n\n const idKey = options?.idKey ?? 'id'\n const customKeyForResult = options?.customKeyForResult ?? null\n const params = options?.params ?? {}\n\n const requestParams: TypeCallParams = {\n ...params,\n order: { ...(params['order'] || {}), [idKey]: 'ASC' },\n filter: [...(params['filter'] || [])],\n pagination: { page: 0, limit: batchSize }\n }\n\n let allItems: T[] = []\n let isContinue = true\n let nextId = 0\n do {\n const sendParams = { ...requestParams }\n sendParams.filter.push([idKey, '>', nextId])\n const response: AjaxResult<T> = await this._b24.actions.v3.call.make<T>({\n method: options.method,\n params: requestParams,\n requestId: options.requestId\n })\n\n if (!response.isSuccess) {\n this._logger.error('callFastListMethod', {\n method: options.method,\n requestId: options.requestId,\n messages: response.getErrorMessages()\n })\n for (const [index, error] of response.errors) {\n result.addError(error, index)\n }\n isContinue = false\n break\n }\n const responseData = response.getData()\n if (!responseData) {\n isContinue = false\n break\n }\n\n const resultData = (responseData.result as any)[customKeyForResult] as T[]\n if (resultData.length === 0) {\n isContinue = false\n break\n }\n\n allItems = [...allItems, ...resultData]\n\n if (resultData.length < batchSize) {\n isContinue = false\n break\n }\n\n // Update the filter for the next iteration\n const lastItem = resultData[resultData.length - 1] as Record<string, any>\n if (lastItem && typeof lastItem[idKey] !== 'undefined') {\n nextId = Number.parseInt(lastItem[idKey] as string)\n } else {\n isContinue = false\n break\n }\n } while (isContinue)\n\n return result.setData(allItems)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package @bitrix24/b24jssdk
|
|
3
|
-
* @version 1.0.
|
|
3
|
+
* @version 1.0.3
|
|
4
4
|
* @copyright (c) 2026 Bitrix24
|
|
5
5
|
* @license MIT
|
|
6
6
|
* @see https://github.com/bitrix24/b24jssdk
|
|
@@ -57,6 +57,7 @@ class FetchListV3 extends AbstractAction {
|
|
|
57
57
|
* requestId: 'eventlog-123',
|
|
58
58
|
* limit: 60
|
|
59
59
|
* })
|
|
60
|
+
*
|
|
60
61
|
* for await (const chunk of generator) {
|
|
61
62
|
* // Process chunk (e.g., save to database, analyze, etc.)
|
|
62
63
|
* console.log(`Processing ${chunk.length} items`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-list.mjs","sources":["../../../../../src/core/actions/v3/fetch-list.ts"],"sourcesContent":["import type { ActionOptions } from '../abstract-action'\nimport type { TypeCallParams } from '../../../types/http'\nimport type { AjaxResult } from '../../http/ajax-result'\nimport { AbstractAction } from '../abstract-action'\nimport { SdkError } from '../../sdk-error'\n\nexport type ActionFetchListV3 = ActionOptions & {\n method: string\n params?: Omit<TypeCallParams, 'pagination'>\n idKey?: string\n customKeyForResult: string\n requestId?: string\n limit?: number\n}\n\n/**\n * Calls a REST API list method and returns an async generator for efficient large data retrieval. `restApi:v3`\n *\n * @todo add docs\n */\nexport class FetchListV3 extends AbstractAction {\n /**\n * Calls a REST API list method and returns an async generator for efficient large data retrieval.\n * Implements the fast algorithm for iterating over large datasets without loading all data into memory at once.\n *\n * @template T - The type of items in the returned arrays (default is `unknown`).\n *\n * @param {ActionFetchListV3} options - parameters for executing the request.\n * - `method: string` - The name of the REST API method that returns a list of data (for example: `crm.item.list`, `tasks.task.list`)\n * - `params?: Omit<TypeCallParams, 'pagination'>` - Request parameters, excluding the `pagination` parameter,\n * since the method is designed to obtain all data in one call.\n * Note: Use `filter`, `order`, and `select` to control the selection.\n * - `idKey?: string` - The name of the field containing the unique identifier of the element.\n * Default is 'id'. Alternatively, it can be another field, depending on the REST API data structure.\n * - `customKeyForResult: string` - A custom key indicating that the response REST API will be\n * grouped by this field.\n * Example: `items` to group a list of CRM items.\n * - `requestId?: string` - Unique request identifier for tracking. Used for query deduplication and debugging.\n * - `limit?: number` - How many records to retrieve at a time. Default is `50`. Maximum is `1000`.\n *\n * @returns {AsyncGenerator<T[]>} An async generator that yields chunks of data as arrays of type `T`.\n * Each iteration returns the next page/batch of results until all data is fetched.\n *\n * @example\n * import { Text } from '@bitrix24/b24jssdk'\n *\n * interface MainEventLogItem { id: number, userId: number }\n * const sixMonthAgo = new Date()\n * sixMonthAgo.setMonth((new Date()).getMonth() - 6)\n * sixMonthAgo.setHours(0, 0, 0)\n * const generator = b24.actions.v3.fetchList.make<MainEventLogItem>({\n * method: 'main.eventlog.list',\n * params: {\n * filter: [\n * ['timestampX', '>=', Text.toB24Format(sixMonthAgo)] // created at least 6 months ago\n * ],\n * select: ['id', 'userId']\n * },\n * idKey: 'id',\n * customKeyForResult: 'items',\n * requestId: 'eventlog-123',\n * limit: 60\n * })\n * for await (const chunk of generator) {\n * // Process chunk (e.g., save to database, analyze, etc.)\n * console.log(`Processing ${chunk.length} items`)\n * }\n */\n public override async* make<T = unknown>(options: ActionFetchListV3): AsyncGenerator<T[]> {\n const batchSize = options?.limit ?? 50\n\n const idKey = options?.idKey ?? 'id'\n const customKeyForResult = options?.customKeyForResult ?? null\n const params = options?.params ?? {}\n\n const requestParams: TypeCallParams = {\n ...params,\n order: { ...(params['order'] || {}), [idKey]: 'ASC' },\n filter: [...(params['filter'] || [])],\n pagination: { page: 0, limit: batchSize }\n }\n\n let isContinue = true\n let nextId = 0\n do {\n const sendParams = { ...requestParams }\n sendParams.filter.push([idKey, '>', nextId])\n\n const response: AjaxResult<T> = await this._b24.actions.v3.call.make<T>({\n method: options.method,\n params: requestParams,\n requestId: options.requestId\n })\n\n if (!response.isSuccess) {\n this._logger.error('fetchListMethod', {\n method: options.method,\n requestId: options.requestId,\n messages: response.getErrorMessages()\n })\n throw new SdkError({\n code: 'JSSDK_CORE_B24_FETCH_LIST_METHOD_API_V3',\n description: `API Error: ${response.getErrorMessages().join('; ')}`,\n status: 500\n })\n }\n const responseData = response.getData()\n if (!responseData) {\n isContinue = false\n break\n }\n\n const resultData: T[] = responseData.result[customKeyForResult] as T[]\n if (resultData.length === 0) {\n isContinue = false\n break\n }\n\n yield resultData\n\n if (resultData.length < batchSize) {\n isContinue = false\n break\n }\n\n // Update the filter for the next iteration\n const lastItem = resultData[resultData.length - 1] as Record<string, any>\n if (\n lastItem\n && typeof lastItem[idKey] !== 'undefined'\n ) {\n nextId = Number.parseInt(lastItem[idKey] as string)\n } else {\n isContinue = false\n break\n }\n } while (isContinue)\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAoBO,MAAM,oBAAoB,cAAA,CAAe;AAAA,EApBhD;AAoBgD,IAAA,MAAA,CAAA,IAAA,EAAA,aAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"fetch-list.mjs","sources":["../../../../../src/core/actions/v3/fetch-list.ts"],"sourcesContent":["import type { ActionOptions } from '../abstract-action'\nimport type { TypeCallParams } from '../../../types/http'\nimport type { AjaxResult } from '../../http/ajax-result'\nimport { AbstractAction } from '../abstract-action'\nimport { SdkError } from '../../sdk-error'\n\nexport type ActionFetchListV3 = ActionOptions & {\n method: string\n params?: Omit<TypeCallParams, 'pagination'>\n idKey?: string\n customKeyForResult: string\n requestId?: string\n limit?: number\n}\n\n/**\n * Calls a REST API list method and returns an async generator for efficient large data retrieval. `restApi:v3`\n *\n * @todo add docs\n */\nexport class FetchListV3 extends AbstractAction {\n /**\n * Calls a REST API list method and returns an async generator for efficient large data retrieval.\n * Implements the fast algorithm for iterating over large datasets without loading all data into memory at once.\n *\n * @template T - The type of items in the returned arrays (default is `unknown`).\n *\n * @param {ActionFetchListV3} options - parameters for executing the request.\n * - `method: string` - The name of the REST API method that returns a list of data (for example: `crm.item.list`, `tasks.task.list`)\n * - `params?: Omit<TypeCallParams, 'pagination'>` - Request parameters, excluding the `pagination` parameter,\n * since the method is designed to obtain all data in one call.\n * Note: Use `filter`, `order`, and `select` to control the selection.\n * - `idKey?: string` - The name of the field containing the unique identifier of the element.\n * Default is 'id'. Alternatively, it can be another field, depending on the REST API data structure.\n * - `customKeyForResult: string` - A custom key indicating that the response REST API will be\n * grouped by this field.\n * Example: `items` to group a list of CRM items.\n * - `requestId?: string` - Unique request identifier for tracking. Used for query deduplication and debugging.\n * - `limit?: number` - How many records to retrieve at a time. Default is `50`. Maximum is `1000`.\n *\n * @returns {AsyncGenerator<T[]>} An async generator that yields chunks of data as arrays of type `T`.\n * Each iteration returns the next page/batch of results until all data is fetched.\n *\n * @example\n * import { Text } from '@bitrix24/b24jssdk'\n *\n * interface MainEventLogItem { id: number, userId: number }\n * const sixMonthAgo = new Date()\n * sixMonthAgo.setMonth((new Date()).getMonth() - 6)\n * sixMonthAgo.setHours(0, 0, 0)\n * const generator = b24.actions.v3.fetchList.make<MainEventLogItem>({\n * method: 'main.eventlog.list',\n * params: {\n * filter: [\n * ['timestampX', '>=', Text.toB24Format(sixMonthAgo)] // created at least 6 months ago\n * ],\n * select: ['id', 'userId']\n * },\n * idKey: 'id',\n * customKeyForResult: 'items',\n * requestId: 'eventlog-123',\n * limit: 60\n * })\n *\n * for await (const chunk of generator) {\n * // Process chunk (e.g., save to database, analyze, etc.)\n * console.log(`Processing ${chunk.length} items`)\n * }\n */\n public override async* make<T = unknown>(options: ActionFetchListV3): AsyncGenerator<T[]> {\n const batchSize = options?.limit ?? 50\n\n const idKey = options?.idKey ?? 'id'\n const customKeyForResult = options?.customKeyForResult ?? null\n const params = options?.params ?? {}\n\n const requestParams: TypeCallParams = {\n ...params,\n order: { ...(params['order'] || {}), [idKey]: 'ASC' },\n filter: [...(params['filter'] || [])],\n pagination: { page: 0, limit: batchSize }\n }\n\n let isContinue = true\n let nextId = 0\n do {\n const sendParams = { ...requestParams }\n sendParams.filter.push([idKey, '>', nextId])\n\n const response: AjaxResult<T> = await this._b24.actions.v3.call.make<T>({\n method: options.method,\n params: requestParams,\n requestId: options.requestId\n })\n\n if (!response.isSuccess) {\n this._logger.error('fetchListMethod', {\n method: options.method,\n requestId: options.requestId,\n messages: response.getErrorMessages()\n })\n throw new SdkError({\n code: 'JSSDK_CORE_B24_FETCH_LIST_METHOD_API_V3',\n description: `API Error: ${response.getErrorMessages().join('; ')}`,\n status: 500\n })\n }\n const responseData = response.getData()\n if (!responseData) {\n isContinue = false\n break\n }\n\n const resultData: T[] = (responseData.result as any)[customKeyForResult] as T[]\n if (resultData.length === 0) {\n isContinue = false\n break\n }\n\n yield resultData\n\n if (resultData.length < batchSize) {\n isContinue = false\n break\n }\n\n // Update the filter for the next iteration\n const lastItem = resultData[resultData.length - 1] as Record<string, any>\n if (\n lastItem\n && typeof lastItem[idKey] !== 'undefined'\n ) {\n nextId = Number.parseInt(lastItem[idKey] as string)\n } else {\n isContinue = false\n break\n }\n } while (isContinue)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package @bitrix24/b24jssdk
|
|
3
|
-
* @version 1.0.
|
|
3
|
+
* @version 1.0.3
|
|
4
4
|
* @copyright (c) 2026 Bitrix24
|
|
5
5
|
* @license MIT
|
|
6
6
|
* @see https://github.com/bitrix24/b24jssdk
|
|
@@ -44,7 +44,7 @@ class AbstractHttp {
|
|
|
44
44
|
this._logger = LoggerFactory.createNullLogger();
|
|
45
45
|
const defaultHeaders = {};
|
|
46
46
|
if (this.isServerSide()) {
|
|
47
|
-
defaultHeaders["User-Agent"] = "b24-js-sdk/1.0.
|
|
47
|
+
defaultHeaders["User-Agent"] = "b24-js-sdk/1.0.3";
|
|
48
48
|
}
|
|
49
49
|
this._authActions = authActions;
|
|
50
50
|
this._requestIdGenerator = new RequestIdGenerator();
|