@bitrix24/b24jssdk
Version:
Bitrix24 REST API JavaScript SDK
101 lines (98 loc) • 3.42 kB
JavaScript
/**
* @package @bitrix24/b24jssdk
* @version 1.0.3
* @copyright (c) 2026 Bitrix24
* @license MIT
* @see https://github.com/bitrix24/b24jssdk
* @see https://bitrix24.github.io/b24jssdk/
*/
import { AbstractHttp } from './abstract-http.mjs';
import { ApiVersion } from '../../types/b24.mjs';
import { InteractionBatchV2 } from '../interaction/batch/v2.mjs';
import { ProcessingAsArrayV2 } from '../interaction/batch/processing/v2/as-array.mjs';
import { ProcessingAsObjectV2 } from '../interaction/batch/processing/v2/as-object.mjs';
import { AjaxError } from './ajax-error.mjs';
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
class HttpV2 extends AbstractHttp {
static {
__name(this, "HttpV2");
}
constructor(authActions, options, restrictionParams) {
super(authActions, options, restrictionParams);
this._version = ApiVersion.v2;
}
// region batch ////
async batch(calls, options) {
const opts = {
isHaltOnError: true,
...options
};
const requestId = opts.requestId ?? this._requestIdGenerator.getRequestId();
this._logBatchStart(requestId, calls, opts);
const interactionBatch = new InteractionBatchV2({
requestId,
parallelDefaultValue: !opts.isHaltOnError,
restrictionManager: this._restrictionManager
});
if (Array.isArray(calls)) {
interactionBatch.setProcessingStrategy(new ProcessingAsArrayV2());
} else {
interactionBatch.setProcessingStrategy(new ProcessingAsObjectV2());
}
interactionBatch.addCommands(calls);
if (interactionBatch.size > interactionBatch.maxSize) {
throw new AjaxError({
code: "JSSDK_BATCH_TOO_LARGE",
description: `Batch too large: ${interactionBatch.size} commands (max: ${interactionBatch.maxSize})`,
status: 400,
requestInfo: { method: "batch", params: { cmd: calls }, requestId },
originalError: null
});
}
if (interactionBatch.size === 0) {
throw new AjaxError({
code: "JSSDK_BATCH_EMPTY",
description: "Batch must contain at least one command",
status: 400,
requestInfo: { method: "batch", params: { cmd: calls }, requestId },
originalError: null
});
}
const responseBatch = await this.call(
"batch",
{
halt: opts.isHaltOnError ? 1 : 0,
cmd: interactionBatch.getCommandsForCall()
},
requestId
);
const response = await interactionBatch.prepareResponse(responseBatch);
this._logBatchCompletion(
requestId,
response.getData()?.result?.size ?? 0,
response.getErrorMessages().length
);
return response;
}
// endregion ////
// region Prepare ////
/**
* @inheritDoc
*/
_prepareMethod(requestId, method, baseUrl) {
const methodUrl = `/${encodeURIComponent(method)}`;
if (method.includes("task.")) {
return `${baseUrl}${methodUrl}`;
}
const queryParams = new URLSearchParams({
[this._requestIdGenerator.getQueryStringParameterName()]: requestId,
[this._requestIdGenerator.getQueryStringSdkParameterName()]: "1.0.3",
[this._requestIdGenerator.getQueryStringSdkTypeParameterName()]: "b24-js-sdk"
});
return `${baseUrl}${methodUrl}?${queryParams.toString()}`;
}
// endregion ////
}
export { HttpV2 };
//# sourceMappingURL=v2.mjs.map