@bitrix24/b24jssdk 1.1.0 → 1.1.1
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/README-AI.md +2 -0
- 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/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 +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.mjs +1 -1
- package/dist/esm/core/actions/v2/fetch-list.mjs +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.mjs +1 -1
- package/dist/esm/core/actions/v3/call-list.mjs +1 -1
- package/dist/esm/core/actions/v3/call.mjs +1 -1
- package/dist/esm/core/actions/v3/fetch-list.mjs +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 +70 -38
- package/dist/esm/core/http/limiters/manager.mjs.map +1 -1
- package/dist/esm/core/http/limiters/operating-limiter.mjs +1 -1
- package/dist/esm/core/http/limiters/params-factory.mjs +3 -2
- package/dist/esm/core/http/limiters/params-factory.mjs.map +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 +2 -2
- package/dist/esm/core/interaction/batch/processing/v2/abstract-processing.mjs.map +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 +16 -9
- package/dist/esm/core/interaction/batch/processing/v3/abstract-processing.mjs.map +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 +69 -2
- package/dist/esm/index.d.ts +69 -2
- 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/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/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 +91 -51
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/index.min.js +17 -17
- package/dist/umd/index.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-processing.mjs","sources":["../../../../../../../src/core/interaction/batch/processing/v2/abstract-processing.ts"],"sourcesContent":["import type { BatchCommandV3, ICallBatchResult } from '../../../../../types/http'\nimport type { IProcessingStrategy, ResponseHelper, ResultItems } from '../interface-strategy'\nimport type { BatchResponseData } from '../../abstract-interaction-batch'\nimport * as qs from 'qs-esm'\nimport { AbstractProcessing } from '../interface-strategy'\nimport { SdkError } from '../../../../sdk-error'\nimport { AjaxResult } from '../../../../http/ajax-result'\nimport { Result } from '../../../../result'\n\nexport abstract class AbstractProcessingV2 extends AbstractProcessing implements IProcessingStrategy {\n protected _buildRow(command: BatchCommandV3): string {\n return `${command.method}?${qs.stringify(command.query || {})}`\n }\n\n public buildCommands(commands: BatchCommandV3[]): string[] | Record<string, string> {\n if (commands.length < 1) {\n throw new SdkError({\n code: 'JSSDK_INTERACTION_BATCH_STRATEGY_V2_EMPTY_COMMANDS',\n description: 'commands not set',\n status: 500\n })\n }\n\n const firstCommand = commands[0]!\n const asObject = (typeof firstCommand.as === 'string' && firstCommand.as.length > 0)\n\n if (asObject) {\n const result: Record<string, string> = {}\n\n for (const command of commands) {\n result[command.as!] = this._buildRow(command)\n }\n return result\n }\n\n const result: string[] = []\n\n for (const command of commands) {\n result.push(this._buildRow(command))\n }\n return result\n }\n\n // region prepareItems ////\n public override async prepareItems<T>(\n commands: BatchCommandV3[],\n responseHelper: ResponseHelper<T>\n ): Promise<ResultItems<T>> {\n const results: ResultItems<T> = new Map()\n\n for (const [index, command] of commands.entries()) {\n await this._processResponseItem<T>(\n command,\n // @memo for apiVer2 in this pace we get objectIndex from `command.as` OR array `index` from `commands[]`\n command.as ?? index,\n responseHelper,\n results\n )\n }\n\n return results\n }\n\n protected override async _processResponseItem<T>(\n command: BatchCommandV3,\n index: string | number,\n responseHelper: ResponseHelper<T>,\n results: Map<string | number, AjaxResult<T>>\n ): Promise<void> {\n const responseResult = responseHelper.response.getData()!.result as unknown as BatchResponseData<T>\n const resultData = this._getBatchResultByIndex(responseResult.result, index)\n const resultError = this._getBatchResultByIndex(responseResult.result_error, index)\n\n if (\n typeof resultData !== 'undefined'\n || typeof resultError !== 'undefined'\n ) {\n const methodName = command.method\n\n // Update operating statistics for each method in the batch\n const resultTime = this._getBatchResultByIndex(responseResult.result_time, index)\n if (typeof resultTime !== 'undefined') {\n await responseHelper.restrictionManager.updateStats(responseHelper.requestId, `batch::${methodName}`, resultTime)\n }\n\n const result = new AjaxResult<T>({\n answer: {\n error: resultError ? (typeof resultError === 'string' ? resultError : resultError.error) : undefined,\n error_description: resultError ? (typeof resultError === 'string' ? undefined : resultError.error_description) : undefined,\n result:
|
|
1
|
+
{"version":3,"file":"abstract-processing.mjs","sources":["../../../../../../../src/core/interaction/batch/processing/v2/abstract-processing.ts"],"sourcesContent":["import type { BatchCommandV3, ICallBatchResult } from '../../../../../types/http'\nimport type { IProcessingStrategy, ResponseHelper, ResultItems } from '../interface-strategy'\nimport type { BatchResponseData } from '../../abstract-interaction-batch'\nimport * as qs from 'qs-esm'\nimport { AbstractProcessing } from '../interface-strategy'\nimport { SdkError } from '../../../../sdk-error'\nimport { AjaxResult } from '../../../../http/ajax-result'\nimport { Result } from '../../../../result'\n\nexport abstract class AbstractProcessingV2 extends AbstractProcessing implements IProcessingStrategy {\n protected _buildRow(command: BatchCommandV3): string {\n return `${command.method}?${qs.stringify(command.query || {})}`\n }\n\n public buildCommands(commands: BatchCommandV3[]): string[] | Record<string, string> {\n if (commands.length < 1) {\n throw new SdkError({\n code: 'JSSDK_INTERACTION_BATCH_STRATEGY_V2_EMPTY_COMMANDS',\n description: 'commands not set',\n status: 500\n })\n }\n\n const firstCommand = commands[0]!\n const asObject = (typeof firstCommand.as === 'string' && firstCommand.as.length > 0)\n\n if (asObject) {\n const result: Record<string, string> = {}\n\n for (const command of commands) {\n result[command.as!] = this._buildRow(command)\n }\n return result\n }\n\n const result: string[] = []\n\n for (const command of commands) {\n result.push(this._buildRow(command))\n }\n return result\n }\n\n // region prepareItems ////\n public override async prepareItems<T>(\n commands: BatchCommandV3[],\n responseHelper: ResponseHelper<T>\n ): Promise<ResultItems<T>> {\n const results: ResultItems<T> = new Map()\n\n for (const [index, command] of commands.entries()) {\n await this._processResponseItem<T>(\n command,\n // @memo for apiVer2 in this pace we get objectIndex from `command.as` OR array `index` from `commands[]`\n command.as ?? index,\n responseHelper,\n results\n )\n }\n\n return results\n }\n\n protected override async _processResponseItem<T>(\n command: BatchCommandV3,\n index: string | number,\n responseHelper: ResponseHelper<T>,\n results: Map<string | number, AjaxResult<T>>\n ): Promise<void> {\n const responseResult = responseHelper.response.getData()!.result as unknown as BatchResponseData<T>\n const resultData = this._getBatchResultByIndex(responseResult.result, index)\n const resultError = this._getBatchResultByIndex(responseResult.result_error, index)\n\n if (\n typeof resultData !== 'undefined'\n || typeof resultError !== 'undefined'\n ) {\n const methodName = command.method\n\n // Update operating statistics for each method in the batch\n const resultTime = this._getBatchResultByIndex(responseResult.result_time, index)\n if (typeof resultTime !== 'undefined') {\n await responseHelper.restrictionManager.updateStats(responseHelper.requestId, `batch::${methodName}`, resultTime)\n }\n\n const result = new AjaxResult<T>({\n answer: {\n error: resultError ? (typeof resultError === 'string' ? resultError : resultError.error) : undefined,\n error_description: resultError ? (typeof resultError === 'string' ? undefined : resultError.error_description) : undefined,\n result: resultData as T,\n total: Number.parseInt(this._getBatchResultByIndex(responseResult.result_total, index) || '0'),\n next: Number.parseInt(this._getBatchResultByIndex(responseResult.result_next, index) || '0'),\n time: resultTime!\n },\n query: {\n method: methodName,\n params: command.query || {},\n requestId: responseHelper.requestId\n },\n status: responseHelper.response.getStatus()\n })\n\n results.set(index, result)\n\n return\n }\n\n if (responseHelper.parallelDefaultValue) {\n throw new SdkError({\n code: 'JSSDK_INTERACTION_BATCH_STRATEGY_V2_EMPTY_COMMAND_RESPONSE',\n description: `There were difficulties parsing the response for batch { index: ${index}, method: ${command.method} }`,\n status: 500\n })\n }\n }\n // endregion ////\n\n // region handleResults ////\n public override async handleResults<T>(_commands: BatchCommandV3[], results: ResultItems<T>, responseHelper: ResponseHelper<T>): Promise<Result<ICallBatchResult<T>>> {\n const result = new Result<ICallBatchResult<T>>()\n const dataResult: ResultItems<T> = new Map()\n\n for (const [index, data] of results) {\n if (data.getStatus() !== 200 || !data.isSuccess) {\n const ajaxError = this._createErrorFromAjaxResult(data)\n\n /*\n * This should contain code similar to #isOperatingLimitError with a check for\n * the error 'Method is blocked due to operation time limit.'\n * However, `batch` is executed without retries, so there will be an immediate error.\n */\n\n // @todo fix docs\n // @memo we not throw ajaxError\n this._processResponseError<T>(result, ajaxError, `${index}`)\n dataResult.set(index, data)\n\n // if (responseHelper.parallelDefaultValue && !data.isSuccess) {\n // this._processResponseError<T>(result, ajaxError, `${index}`)\n // dataResult.set(index, data)\n // continue\n // }\n //\n // throw ajaxError\n }\n\n dataResult.set(index, data)\n }\n\n result.setData({\n result: dataResult,\n time: responseHelper.response.getData()!.time\n })\n\n return result\n }\n // endregion ////\n}\n"],"names":["result"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package @bitrix24/b24jssdk
|
|
3
|
-
* @version 1.1.
|
|
3
|
+
* @version 1.1.1
|
|
4
4
|
* @copyright (c) 2026 Bitrix24
|
|
5
5
|
* @license MIT
|
|
6
6
|
* @see https://github.com/bitrix24/b24jssdk
|
|
@@ -45,21 +45,28 @@ class AbstractProcessingV3 extends AbstractProcessing {
|
|
|
45
45
|
return results;
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
48
|
+
* In `restApi:v3`, `response.getData().result` is the array/record of per-command
|
|
49
|
+
* results directly (no `result_error`/`result_time`/`result_total`/`result_next`
|
|
50
|
+
* split as in v2). Per-command errors do not exist in this format.
|
|
51
|
+
*
|
|
52
|
+
* The per-command `result` value is forwarded as-is, including `null` when the
|
|
53
|
+
* underlying REST method returns `null` (see issue #23).
|
|
49
54
|
*/
|
|
50
55
|
async _processResponseItem(command, index, responseHelper, results) {
|
|
51
56
|
const responseResult = responseHelper.response.getData().result;
|
|
52
57
|
const resultData = this._getBatchResultByIndex(responseResult, index);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
+
if (typeof resultData === "undefined") {
|
|
59
|
+
throw new SdkError({
|
|
60
|
+
code: "JSSDK_INTERACTION_BATCH_STRATEGY_V3_EMPTY_COMMAND_RESPONSE",
|
|
61
|
+
description: `There were difficulties parsing the response for batch { index: ${index}, method: ${command.method} }`,
|
|
62
|
+
status: 500
|
|
63
|
+
});
|
|
58
64
|
}
|
|
65
|
+
const resultTime = responseHelper.response.getData().time;
|
|
59
66
|
const result = new AjaxResult({
|
|
60
67
|
answer: {
|
|
61
|
-
result: resultData
|
|
62
|
-
error:
|
|
68
|
+
result: resultData,
|
|
69
|
+
error: void 0,
|
|
63
70
|
time: resultTime
|
|
64
71
|
},
|
|
65
72
|
query: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-processing.mjs","sources":["../../../../../../../src/core/interaction/batch/processing/v3/abstract-processing.ts"],"sourcesContent":["import type { BatchCommandV3, ICallBatchResult } from '../../../../../types/http'\nimport type { IProcessingStrategy, ResponseHelper, ResultItems } from '../interface-strategy'\nimport
|
|
1
|
+
{"version":3,"file":"abstract-processing.mjs","sources":["../../../../../../../src/core/interaction/batch/processing/v3/abstract-processing.ts"],"sourcesContent":["import type { BatchCommandV3, ICallBatchResult } from '../../../../../types/http'\nimport type { IProcessingStrategy, ResponseHelper, ResultItems } from '../interface-strategy'\nimport { AbstractProcessing } from '../interface-strategy'\nimport { SdkError } from '../../../../sdk-error'\nimport { AjaxResult } from '../../../../http/ajax-result'\nimport { Result } from '../../../../result'\n\nexport abstract class AbstractProcessingV3 extends AbstractProcessing implements IProcessingStrategy {\n public buildCommands(commands: BatchCommandV3[]): BatchCommandV3[] {\n if (commands.length < 1) {\n throw new SdkError({\n code: 'JSSDK_INTERACTION_BATCH_BUILD_STRATEGY_V3_EMPTY_COMMANDS',\n description: 'commands not set',\n status: 500\n })\n }\n\n return commands\n }\n\n // region prepareItems ////\n public override async prepareItems<T>(\n commands: BatchCommandV3[],\n responseHelper: ResponseHelper<T>\n ): Promise<ResultItems<T>> {\n const results: ResultItems<T> = new Map()\n\n /**\n * In `restApi:v3`, batch is all-or-nothing: per-command errors are not\n * returned, and if any command fails the whole batch fails. In that case\n * we skip per-item parsing — the top-level error is surfaced by\n * {@link AbstractProcessingV3.handleResults}.\n */\n if (!responseHelper.response.isSuccess) {\n return results\n }\n\n for (const [index, command] of commands.entries()) {\n await this._processResponseItem<T>(\n command,\n // @memo for apiVer3 in this pace we get objectIndex from array `index` from `commands[]`\n index,\n responseHelper,\n results\n )\n }\n\n return results\n }\n\n /**\n * In `restApi:v3`, `response.getData().result` is the array/record of per-command\n * results directly (no `result_error`/`result_time`/`result_total`/`result_next`\n * split as in v2). Per-command errors do not exist in this format.\n *\n * The per-command `result` value is forwarded as-is, including `null` when the\n * underlying REST method returns `null` (see issue #23).\n */\n protected override async _processResponseItem<T>(\n command: BatchCommandV3,\n index: string | number,\n responseHelper: ResponseHelper<T>,\n results: Map<string | number, AjaxResult<T>>\n ): Promise<void> {\n const responseResult = responseHelper.response.getData()!.result as unknown as\n T[] | Record<string | number, T> | undefined\n const resultData = this._getBatchResultByIndex(responseResult, index)\n\n if (typeof resultData === 'undefined') {\n throw new SdkError({\n code: 'JSSDK_INTERACTION_BATCH_STRATEGY_V3_EMPTY_COMMAND_RESPONSE',\n description: `There were difficulties parsing the response for batch { index: ${index}, method: ${command.method} }`,\n status: 500\n })\n }\n\n /**\n * `time` on the v3 response is the batch-level time, not per-command.\n * We forward it to AjaxResult so callers can still inspect it, but we do\n * not feed it into `restrictionManager.updateStats(batch::<method>, …)`\n * — attributing the whole-batch duration to every method would distort\n * the rate-limiter stats.\n */\n const resultTime = responseHelper.response.getData()!.time\n\n const result = new AjaxResult<T>({\n answer: {\n result: resultData as T,\n error: undefined,\n time: resultTime\n },\n query: {\n method: command.method,\n params: command.query || {},\n requestId: responseHelper.requestId\n },\n status: responseHelper.response.getStatus()\n })\n\n results.set(index, result)\n return\n }\n // endregion ////\n\n // region handleResults ////\n public override async handleResults<T>(commands: BatchCommandV3[], results: ResultItems<T>, responseHelper: ResponseHelper<T>): Promise<Result<ICallBatchResult<T>>> {\n const result = new Result<ICallBatchResult<T>>()\n const dataResult: ResultItems<T> = new Map()\n /**\n * v3 batch is all-or-nothing — on failure the response carries one or more\n * top-level errors and no per-row data.\n *\n * @see AbstractProcessingV3.prepareItems()\n */\n if (!responseHelper.response.isSuccess) {\n for (const [index, error] of responseHelper.response.errors) {\n result.addError(error, index)\n }\n result.setData({\n result: dataResult,\n time: undefined\n })\n return result\n }\n\n for (const [index, data] of results) {\n const rowIndex = Number.parseInt(`${index}`)\n const command = commands[rowIndex]\n if (typeof command === 'undefined') {\n throw new SdkError({\n code: 'JSSDK_INTERACTION_BATCH_BUILD_STRATEGY_V3_EMPTY_COMMAND',\n description: `command for index ${index} not set`,\n status: 500\n })\n }\n\n const commandIndex = command.as ?? index\n if (data.getStatus() !== 200 || !data.isSuccess) {\n const ajaxError = this._createErrorFromAjaxResult(data)\n\n /*\n * This should contain code similar to #isOperatingLimitError with a check for\n * the error 'Method is blocked due to operation time limit.'\n * However, `batch` is executed without retries, so there will be an immediate error.\n */\n\n // @todo fix docs\n // @memo we not throw ajaxError\n this._processResponseError<T>(result, ajaxError, `${commandIndex}`)\n dataResult.set(commandIndex, data)\n\n // if (responseHelper.parallelDefaultValue && !data.isSuccess) {\n // this._processResponseError<T>(result, ajaxError, `${index}`)\n // dataResult.set(index, data)\n // continue\n // }\n //\n // throw ajaxError\n }\n\n dataResult.set(commandIndex, data)\n }\n\n result.setData({\n result: dataResult,\n time: responseHelper.response.getData()!.time\n })\n\n return result\n }\n // endregion ////\n}\n"],"names":[],"mappings":"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"}
|
package/dist/esm/core/result.mjs
CHANGED
package/dist/esm/frame/auth.mjs
CHANGED
package/dist/esm/frame/b24.mjs
CHANGED
package/dist/esm/frame/frame.mjs
CHANGED
package/dist/esm/hook/auth.mjs
CHANGED
package/dist/esm/hook/b24.mjs
CHANGED
package/dist/esm/index.d.mts
CHANGED
|
@@ -1324,6 +1324,51 @@ interface RestrictionParams {
|
|
|
1324
1324
|
* Default: 1_000
|
|
1325
1325
|
*/
|
|
1326
1326
|
retryDelay?: number;
|
|
1327
|
+
/**
|
|
1328
|
+
* Whether to retry on transport-level errors (`NETWORK_ERROR`, `REQUEST_TIMEOUT`).
|
|
1329
|
+
*
|
|
1330
|
+
* Default: `true` — preserves the historical retry behaviour.
|
|
1331
|
+
*
|
|
1332
|
+
* Set to `false` for **non-idempotent** calls (e.g. `crm.documentgenerator.document.add`,
|
|
1333
|
+
* any `*.add` that creates an entity, file uploads). When the request times out
|
|
1334
|
+
* client-side, the server may still have processed it successfully — retrying then
|
|
1335
|
+
* creates duplicates. With `retryOnNetworkError: false` the SDK immediately throws
|
|
1336
|
+
* `NETWORK_ERROR` / `REQUEST_TIMEOUT` instead of retrying.
|
|
1337
|
+
*
|
|
1338
|
+
* For long-running heavy operations also raise the axios timeout:
|
|
1339
|
+
* ```ts
|
|
1340
|
+
* const clientAxios = $b24.getHttpClient(ApiVersion.v2).ajaxClient
|
|
1341
|
+
* clientAxios.defaults.timeout = 120_000
|
|
1342
|
+
* ```
|
|
1343
|
+
*/
|
|
1344
|
+
retryOnNetworkError?: boolean;
|
|
1345
|
+
/**
|
|
1346
|
+
* Additional error codes that must be thrown as exceptions immediately,
|
|
1347
|
+
* without any retry. Merged with the SDK's built-in hard list — you can
|
|
1348
|
+
* only **add** codes, not remove built-ins (auth / fatal codes are always hard).
|
|
1349
|
+
*
|
|
1350
|
+
* Use this for business-specific or custom REST methods whose error codes
|
|
1351
|
+
* the SDK doesn't know about (otherwise the SDK treats unknown codes as
|
|
1352
|
+
* transient and retries them with backoff).
|
|
1353
|
+
*
|
|
1354
|
+
* @example
|
|
1355
|
+
* ```ts
|
|
1356
|
+
* await $b24.setRestrictionManagerParams({
|
|
1357
|
+
* ...ParamsFactory.getDefault(),
|
|
1358
|
+
* hardErrorCodes: ['DOCUMENT_GENERATOR_ALREADY_IN_QUEUE', 'MY_APP_BAD_PAYLOAD']
|
|
1359
|
+
* })
|
|
1360
|
+
* ```
|
|
1361
|
+
*/
|
|
1362
|
+
hardErrorCodes?: string[];
|
|
1363
|
+
/**
|
|
1364
|
+
* Additional error codes that should be returned inside `AjaxResult` as a
|
|
1365
|
+
* soft error instead of thrown. Merged with the SDK's built-in soft list.
|
|
1366
|
+
*
|
|
1367
|
+
* Use this when your application expects to inspect a specific REST error
|
|
1368
|
+
* code as part of normal control flow (e.g. validation errors from a
|
|
1369
|
+
* custom v3 endpoint).
|
|
1370
|
+
*/
|
|
1371
|
+
softErrorCodes?: string[];
|
|
1327
1372
|
}
|
|
1328
1373
|
/**
|
|
1329
1374
|
* Limiter operation statistics
|
|
@@ -3960,11 +4005,33 @@ declare class RestrictionManager {
|
|
|
3960
4005
|
updateStats(requestId: string, method: string, timeData: any): Promise<void>;
|
|
3961
4006
|
handleError(requestId: string, method: string, params: any, error: any, attempt: number): Promise<number>;
|
|
3962
4007
|
/**
|
|
3963
|
-
*
|
|
4008
|
+
* Built-in hard error codes (always throw, never retry).
|
|
4009
|
+
*
|
|
4010
|
+
* Includes authorization and fatal codes that must never be silently retried.
|
|
4011
|
+
* Use `RestrictionParams.hardErrorCodes` to extend this list with custom codes.
|
|
4012
|
+
*/
|
|
4013
|
+
static readonly BUILT_IN_HARD_ERROR_CODES: readonly string[];
|
|
4014
|
+
/**
|
|
4015
|
+
* Built-in soft error codes (returned as `AjaxResult` with error, never thrown).
|
|
4016
|
+
*
|
|
4017
|
+
* Use `RestrictionParams.softErrorCodes` to extend this list with custom codes.
|
|
4018
|
+
*/
|
|
4019
|
+
static readonly BUILT_IN_SOFT_ERROR_CODES: readonly string[];
|
|
4020
|
+
/**
|
|
4021
|
+
* Codes that cause the SDK to throw immediately.
|
|
4022
|
+
*
|
|
4023
|
+
* Composed of:
|
|
4024
|
+
* - `BUILT_IN_HARD_ERROR_CODES` (always included)
|
|
4025
|
+
* - `NETWORK_ERROR` and `REQUEST_TIMEOUT` when `retryOnNetworkError === false`
|
|
4026
|
+
* - `RestrictionParams.hardErrorCodes` (user-provided extensions)
|
|
3964
4027
|
*/
|
|
3965
4028
|
get exceptionCodeForHard(): string[];
|
|
3966
4029
|
/**
|
|
3967
|
-
*
|
|
4030
|
+
* Codes returned as `AjaxResult` with an `AjaxError` payload instead of thrown.
|
|
4031
|
+
*
|
|
4032
|
+
* Composed of:
|
|
4033
|
+
* - `BUILT_IN_SOFT_ERROR_CODES` (always included)
|
|
4034
|
+
* - `RestrictionParams.softErrorCodes` (user-provided extensions)
|
|
3968
4035
|
*/
|
|
3969
4036
|
get exceptionCodeForSoft(): string[];
|
|
3970
4037
|
incrementError(method: string): void;
|