@bitrix24/b24jssdk
Version:
Bitrix24 REST API JavaScript SDK
358 lines (354 loc) • 11.3 kB
JavaScript
/**
* @package @bitrix24/b24jssdk
* @version 2.0.0
* @copyright (c) 2026 Bitrix24
* @license MIT
* @see https://github.com/bitrix24/b24jssdk
* @see https://bitrix24.github.io/b24jssdk/
*/
'use strict';
const type = require('../tools/type.cjs');
const result = require('./result.cjs');
const sdkError = require('./sdk-error.cjs');
const b24 = require('../types/b24.cjs');
const versionManager = require('./version-manager.cjs');
const manager = require('./actions/manager.cjs');
const manager$1 = require('./tools/manager.cjs');
const loggerFactory = require('../logger/logger-factory.cjs');
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
class AbstractB24 {
static {
__name(this, "AbstractB24");
}
/**
* Maximum length for batch response.
*
* @deprecated This const is deprecated and will be removed in version `2.0.0`
* @removed 2.0.0
*/
static batchSize = 50;
_isInit = false;
_httpV2 = null;
_httpV3 = null;
_logger;
_actionsManager;
_toolsManager;
// region Init ////
constructor() {
this._isInit = false;
this._logger = loggerFactory.LoggerFactory.createNullLogger();
this._actionsManager = new manager.ActionsManager(this);
this._toolsManager = new manager$1.ToolsManager(this);
}
/**
* @inheritDoc
*/
get isInit() {
return this._isInit;
}
async init() {
this._isInit = true;
return;
}
destroy() {
}
get actions() {
this._ensureInitialized();
return this._actionsManager;
}
get tools() {
this._ensureInitialized();
return this._toolsManager;
}
/**
* Calls the Bitrix24 REST API method.
*
* @deprecated This method is deprecated and will be removed in version `2.0.0`
* - for `restApi:v3` use {@link CallV3.make `b24.actions.v3.call.make(options)`}
* - for `restApi:v2` use {@link CallV2.make `b24.actions.v2.call.make(options)`}
*
* @removed 2.0.0
* @memo Only for `restApi:v2`
*/
async callMethod(method, params, start) {
loggerFactory.LoggerFactory.forcedLog(
this._logger,
"warning",
`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)`,
{
class: "AbstractB24",
method: "callMethod",
replacement: "b24.actions.v3.call.make(options) | b24.actions.v2.call.make(options)",
removalVersion: "2.0.0",
code: "JSSDK_CORE_DEPRECATED_METHOD"
}
);
params = { ...params };
if (!("start" in params && Number.isInteger(params.start)) && Number.isInteger(start)) {
params.start = start;
}
return this._actionsManager.v2.call.make({ method, params });
}
/**
* Calls a Bitrix24 REST API list method to retrieve all data.
*
* @deprecated This method is deprecated and will be removed in version `2.0.0`
* - for `restApi:v3` use {@link CallListV3.make `b24.actions.v3.callList.make(options)`}
* - for `restApi:v2` use {@link CallListV2.make `b24.actions.v2.callList.make(options)`}
*
* @removed 2.0.0
* @memo Only for `restApi:v2`
*/
async callListMethod(method, params, progress, customKeyForResult) {
loggerFactory.LoggerFactory.forcedLog(
this._logger,
"warning",
`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)`,
{
class: "AbstractB24",
method: "callListMethod",
replacement: "b24.actions.v3.callList.make(options) | b24.actions.v2.callList.make(options)",
removalVersion: "2.0.0",
code: "JSSDK_CORE_DEPRECATED_METHOD"
}
);
const result$1 = new result.Result();
if (type.Type.isFunction(progress) && null !== progress) {
progress(0);
}
const sendParams = {
...params,
start: 0
};
return this.actions.v2.call.make({
method,
params: sendParams
}).then(async (response) => {
let list = [];
let resultData;
if (customKeyForResult) {
resultData = response.getData().result[customKeyForResult];
} else {
resultData = response.getData().result;
}
list = [...list, ...resultData];
if (response.isMore()) {
let responseLoop = response;
while (true) {
responseLoop = await responseLoop.getNext(this.getHttpClient(b24.ApiVersion.v2));
if (responseLoop === false) {
break;
}
let resultData2 = void 0;
if (customKeyForResult) {
resultData2 = responseLoop.getData().result[customKeyForResult];
} else {
resultData2 = responseLoop.getData().result;
}
list = [...list, ...resultData2];
if (progress) {
const total = responseLoop.getTotal();
progress(total > 0 ? Math.round(100 * list.length / total) : 100);
}
}
}
result$1.setData(list);
if (progress) {
progress(100);
}
return result$1;
});
}
/**
* Calls a Bitrix24 REST API list method and returns an async generator.
*
* @deprecated This method is deprecated and will be removed in version `2.0.0`
* - for `restApi:v3` use {@link FetchListV3.make `b24.actions.v3.fetchList.make(options)`}
* - for `restApi:v2` use {@link FetchListV2.make `b24.actions.v2.fetchList.make(options)`}
*
* @removed 2.0.0
* @memo Only for `restApi:v2`
*/
async *fetchListMethod(method, params, idKey, customKeyForResult) {
loggerFactory.LoggerFactory.forcedLog(
this._logger,
"warning",
`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)`,
{
class: "AbstractB24",
method: "fetchListMethod",
replacement: "b24.actions.v3.fetchList.make(options) | b24.actions.v2.fetchList.make(options)",
removalVersion: "2.0.0",
code: "JSSDK_CORE_DEPRECATED_METHOD"
}
);
const options = {
method,
params,
idKey,
customKeyForResult: customKeyForResult === null ? void 0 : customKeyForResult
};
yield* this.actions.v2.fetchList.make(options);
}
/**
* Executes a batch request to the Bitrix24 REST API.
*
* @deprecated This method is deprecated and will be removed in version `2.0.0`
* - for `restApi:v3` use {@link BatchV3.make `b24.actions.v3.batch.make(options)`}
* - for `restApi:v2` use {@link BatchV2.make `b24.actions.v2.batch.make(options)`}
*
* @removed 2.0.0
* @memo Only for `restApi:v2`
*/
async callBatch(calls, isHaltOnError, returnAjaxResult) {
loggerFactory.LoggerFactory.forcedLog(
this._logger,
"warning",
`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)`,
{
class: "AbstractB24",
method: "callBatch",
replacement: "b24.actions.v3.batch.make(options) | b24.actions.v2.batch.make(options)",
removalVersion: "2.0.0",
code: "JSSDK_CORE_DEPRECATED_METHOD"
}
);
const callsTyped = calls;
const options = {
isHaltOnError: isHaltOnError ?? true,
returnAjaxResult: returnAjaxResult ?? false
};
return this.actions.v2.batch.make({
calls: callsTyped,
options
});
}
/**
* Executes a batch request to the Bitrix24 REST API with automatic chunking for any number of commands.
*
* @deprecated This method is deprecated and will be removed in version `2.0.0`
* - for `restApi:v3` use {@link BatchByChunkV3.make `b24.actions.v3.batchByChunk.make(options)`}
* - for `restApi:v2` use {@link BatchByChunkV2.make `b24.actions.v2.batchByChunk.make(options)`}
*
* @removed 2.0.0
* @memo Only for `restApi:v2`
*/
async callBatchByChunk(calls, isHaltOnError) {
loggerFactory.LoggerFactory.forcedLog(
this._logger,
"warning",
`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)`,
{
class: "AbstractB24",
method: "callBatchByChunk",
replacement: "b24.actions.v3.batchByChunk.make(options) | b24.actions.v2.batchByChunk.make(options)",
removalVersion: "2.0.0",
code: "JSSDK_CORE_DEPRECATED_METHOD"
}
);
const callsTyped = calls;
const options = {
isHaltOnError,
returnAjaxResult: false
};
return this.actions.v2.batchByChunk.make({
calls: callsTyped,
options
});
}
// endregion ////
// region Tools ////
/**
* @inheritDoc
*/
getHttpClient(version) {
this._ensureInitialized();
switch (version) {
case b24.ApiVersion.v3:
if (null === this._httpV3) {
throw new sdkError.SdkError({
code: "JSSDK_CORE_B24_HTTP_V3_NOT_INIT",
description: `HttpV3 not init`,
status: 500
});
}
return this._httpV3;
case b24.ApiVersion.v2:
if (null === this._httpV2) {
throw new sdkError.SdkError({
code: "JSSDK_CORE_B24_HTTP_V2_NOT_INIT",
description: `HttpV2 not init`,
status: 500
});
}
return this._httpV2;
}
throw new sdkError.SdkError({
code: "JSSDK_CORE_B24_API_WRONG",
description: `Wrong Api Version ${version}`,
status: 500
});
}
/**
* @inheritDoc
*/
setHttpClient(version, client) {
switch (version) {
case b24.ApiVersion.v3:
this._httpV3 = client;
return;
case b24.ApiVersion.v2:
this._httpV2 = client;
return;
}
throw new sdkError.SdkError({
code: "JSSDK_CORE_B24_API_WRONG",
description: `Wrong Api Version ${version}`,
status: 500
});
}
setLogger(logger) {
this._logger = logger;
this._actionsManager.setLogger(this._logger);
this._toolsManager.setLogger(this._logger);
versionManager.versionManager.getAllApiVersions().forEach((version) => {
this.getHttpClient(version).setLogger(this._logger);
});
}
getLogger() {
return this._logger;
}
/**
* @inheritDoc
*/
async setRestrictionManagerParams(params) {
const promises = versionManager.versionManager.getAllApiVersions().map(
(version) => this.getHttpClient(version).setRestrictionManagerParams(params)
);
await Promise.allSettled(promises);
}
/**
* Returns settings for http connection
* @protected
*/
_getHttpOptions() {
return null;
}
/**
* Generates an object not initialized error
* @protected
*/
_ensureInitialized() {
if (!this._isInit) {
throw new sdkError.SdkError({
code: "JSSDK_CORE_B24_NOT_INIT",
description: `B24 not initialized`,
status: 500
});
}
}
// endregion ////
}
exports.AbstractB24 = AbstractB24;
//# sourceMappingURL=abstract-b24.cjs.map