{"id":15579262,"url":"https://github.com/andrey-tech/bx24-wrapper-js","last_synced_at":"2025-04-24T01:28:16.730Z","repository":{"id":45715995,"uuid":"267903582","full_name":"andrey-tech/bx24-wrapper-js","owner":"andrey-tech","description":"Класс-обертка для стандартной JS-библиотеки Битрикс24. Позволяет избежать ада колбеков и работать c REST API Битрикс24, используя асинхронные функции и асинхронные генераторы ECMAScript 9.","archived":false,"fork":false,"pushed_at":"2023-08-06T06:46:47.000Z","size":87,"stargazers_count":31,"open_issues_count":0,"forks_count":14,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-30T05:41:15.372Z","etag":null,"topics":["api","async","async-await","async-generator","await","bitrix","bitrix24","ecmascript2018","generator","javascipt","throttling"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrey-tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-29T16:24:05.000Z","updated_at":"2025-03-11T08:25:45.000Z","dependencies_parsed_at":"2025-03-07T04:41:13.181Z","dependency_job_id":null,"html_url":"https://github.com/andrey-tech/bx24-wrapper-js","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrey-tech%2Fbx24-wrapper-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrey-tech%2Fbx24-wrapper-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrey-tech%2Fbx24-wrapper-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrey-tech%2Fbx24-wrapper-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrey-tech","download_url":"https://codeload.github.com/andrey-tech/bx24-wrapper-js/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250543373,"owners_count":21447886,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","async","async-await","async-generator","await","bitrix","bitrix24","ecmascript2018","generator","javascipt","throttling"],"created_at":"2024-10-02T19:14:17.346Z","updated_at":"2025-04-24T01:28:16.711Z","avatar_url":"https://github.com/andrey-tech.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bitrix24 JS-lib Wrapper\n\n![Bitrix24 logo](./assets/bitrix24-logo.png)  \n\n[![Latest Stable Version](https://poser.pugx.org/andrey-tech/bx24-wrapper-js/v)](https://packagist.org/packages/andrey-tech/bx24-wrapper-js)\n[![GitHub stars](https://img.shields.io/github/stars/andrey-tech/bx24-wrapper-js)](https://github.com/andrey-tech/bx24-wrapper-js/stargazers)\n[![GitHub forks](https://img.shields.io/github/forks/andrey-tech/bx24-wrapper-js)](https://github.com/andrey-tech/bx24-wrapper-js/network)\n[![GitHub watchers](https://img.shields.io/github/watchers/andrey-tech/bx24-wrapper-js)](https://github.com/andrey-tech/bx24-wrapper-js/watchers)\n[![License](https://poser.pugx.org/andrey-tech/bx24-wrapper-js/license)](https://packagist.org/packages/andrey-tech/bx24-wrapper-js)\n\nКласс-обертка на JavaScript для стандартной [JS-библиотеки](https://dev.1c-bitrix.ru/rest_help/js_library/index.php) Битрикс24.\nДанный класс позволяет избежать [ада колбеков](http://callbackhell.ru) и работать c API Битрикс24\nс помощью асинхронных функций и асинхронных генераторов ECMAScript 9.  \n\nРазработчики на PHP могут воспользоваться классом-оберткой [andrey-tech/bitrix24-api-php](https://github.com/andrey-tech/bitrix24-api-php).\n\n## Содержание\n\u003c!-- MarkdownTOC levels=\"1,2,3,4,5,6\" autoanchor=\"true\" autolink=\"true\" lowercase=\"all\" --\u003e\n\n- [Требования](#%D1%82%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)\n- [Класс BX24Wrapper](#%D0%BA%D0%BB%D0%B0%D1%81%D1%81-bx24wrapper)\n- [Методы класса BX24Wrapper](#%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0-bx24wrapper)\n    - [Метод `async callMethod()`](#%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-async-callmethod)\n    - [Метод `async callListMethod()`](#%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-async-calllistmethod)\n    - [Метод `async *fetchList()`](#%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-async-fetchlist)\n    - [Метод `async callBatch()`](#%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-async-callbatch)\n    - [Метод `async callLongBatch()`](#%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-async-calllongbatch)\n    - [Метод `async *callLargeBatch()`](#%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-async-calllargebatch)\n    - [Метод `static createCalls()`](#%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-static-createcalls)\n    - [Метод `getLastResult()`](#%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-getlastresult)\n- [Обработка ошибок](#%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA)\n- [Автор](#%D0%B0%D0%B2%D1%82%D0%BE%D1%80)\n- [Лицензия](#%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F)\n\n\u003c!-- /MarkdownTOC --\u003e\n\n\u003ca id=\"%D1%82%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F\"\u003e\u003c/a\u003e\n## Требования\n\n- Стандартная [JS-библиотека](https://dev.1c-bitrix.ru/rest_help/js_library/index.php) Битрикс24 v1.0,\nкоторая представляет собой JavaScriptS SDK для REST API, что позволяет обращаться к API прямо из front-end приложения \nне погружаясь в реализацию авторизации по OAuth 2.0. **Для внешних приложений и вебхуков библиотека использоваться не может.**  \n\nПодключение стандартной библиотеки Битрикс24 v1.0:\n```html\n\u003cscript src=\"//api.bitrix24.com/api/v1/\"\u003e\u003c/script\u003e\n```\n- Среда исполнения JavaScript, соответствущая спецификации ECMAScript 9 ([ECMAScript® 2018](http://www.ecma-international.org/ecma-262/9.0/index.html))\nв части [поддержки асинхронных генераторов JavaScript](https://caniuse.com/#search=async%20generator) :\n    - Google Chrome \u003e= 63\n    - Mozilla Firefox \u003e= 55\n    - Apple Safari \u003e= 12\n    - Microsoft Edge \u003e= 79\n    - Opera \u003e= 50\n\n\u003ca id=\"%D0%BA%D0%BB%D0%B0%D1%81%D1%81-bx24wrapper\"\u003e\u003c/a\u003e\n## Класс BX24Wrapper\n\nСоздание нового объекта класса `BX24Wrapper`:\n\n- `new BX24Wrapper();`\n\nДополнительные параметры работы устанавливаются через свойства объекта класса `BX24Wrapper`.\n\n| Свойство    | По умолчанию     | Описание                                                                                                                                                               |\n|-------------|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `batchSize` | 50               | Максимальное число команд в одном пакете запросе ([не более 50](https://dev.1c-bitrix.ru/rest_help/general/lists.php))                                                 |\n| `throttle`  | 2                | Максимальное число запросов к API в секунду ([не более 2-х запросов в секунду](https://dev.1c-bitrix.ru/rest_help/rest_sum/index.php))                                 |\n| `progress`  | `percent =\u003e {};` | Функция для контроля прогресса выполнения запросов в методах `callListMethod()`, `fetchList()`, `callLongBatch()` и `callLargeBatch()` (`percent` - прогресс 0-100, %) |\n\n```js\n(async () =\u003e {\n    let bx24 = new BX24Wrapper();\n\n    // Устанавливаем максимальное число команд в одном пакете запросе\n    bx24.batchSize = 25;\n    \n    // Устанавливаем троттлинг запросов к API Битрикс24 на уровне 0,5 запросов в секунду,\n    // то есть 1 запрос в 2 секунды\n    bx24.throttle = 0.5;\n\n    // Устанавливаем собственную функцию для вывода в веб-консоль прогресса выполнения запросов в процентах\n    bx24.progress = percent =\u003e console.log(`Progress: ${percent}%`);\n\n})().catch(error =\u003e console.log('Error:', error));\n```\n \n\u003ca id=\"%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0-bx24wrapper\"\u003e\u003c/a\u003e\n## Методы класса BX24Wrapper\n\n\u003ca id=\"%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-async-callmethod\"\u003e\u003c/a\u003e\n### Метод `async callMethod()`\n\nВызывает указанный метод REST-сервиса с заданными параметрами и возвращает объект Promise (промис).  \nОбертка метода [callMethod](https://dev.1c-bitrix.ru/rest_help/js_library/rest/callMethod.php) стандартной библиотеки Битрикс24.\n\n- `callMethod(method [, params = {}, dataExtractor = null ]);`  \n    Параметры:\n    - *string* `method` - строка, указывающая вызываемый метод REST-сервиса;\n    - *object* `params` - объект параметров для метода REST-сервиса;\n    - *function* `dataExtractor` - функция для извлечения данных из результатов запроса.\n    \n```js\n(async () =\u003e {\n    let bx24 = new BX24Wrapper();\n\n    // Загружаем компанию по её ID\n    let company = await bx24.callMethod('crm.company.get', { ID: 6 });\n    console.log('Company:', company);\n\n})().catch(error =\u003e console.log('Error:', error));\n```\n\n\u003ca id=\"%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-async-calllistmethod\"\u003e\u003c/a\u003e\n### Метод `async callListMethod()`\n\nВызывает указанный **списочный** метод REST-сервиса с заданными параметрами и возвращает объект Promise (промис).\nПозволяет одним вызовом загружать произвольное число сущностей с фильтрацией по параметрам в виде массива объектов\nи контролировать прогресс выполнения загрузки.\n\n- `callListMethod(listMethod [, params = {}, dataExtractor = null ]);`  \n    Параметры:\n    - *string* `listMethod` - строка, указывающая вызываемый списочный метод REST-сервиса;\n    - *object* `params` - объект параметров для списочного метода REST-сервиса;\n    - *function* `dataExtractor` - функция для извлечения данных из результатов запроса.\n\n```js\n(async () =\u003e {\n    let bx24 = new BX24Wrapper();\n\n    // Устанавливаем собственную функцию для вывода в веб-консоль прогресса выполнения запросов в процентах\n    bx24.progress = percent =\u003e console.log(`progress: ${percent}%`);\n\n    let params = {\n        filter: { CATALOD_ID: 21 },\n        select: [ '*', 'PROPERTY_*' ]\n    };\n\n    // Загружем список всех товаров в заданном товарном каталоге CRM\n    let products = await bx24.callListMethod('crm.product.list', params);\n    for (let product of products) {\n        console.log('Product:', product);\n    }\n\n    params = {\n        filter: { iblockId: 11 },\n        select: [ '*', 'id', 'iblockId' ]\n    };\n    \n    // Задаем собственную функцию для извлечения массива товаров из объекта с результатами запроса\n    let dataExtractor = data =\u003e data.products;\n    \n    // Загружем список всех товаров в заданном товарном каталоге\n    products = await bx24.callListMethod('catalog.product.list', params, dataExtractor);\n    for (let product of products) {\n        console.log('Product:', product);\n    }\n\n})().catch(error =\u003e console.log('Error:', error));\n```\n\n\u003ca id=\"%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-async-fetchlist\"\u003e\u003c/a\u003e\n### Метод `async *fetchList()`\n\nВызывает указанный **списочный** метод REST-сервиса с заданными параметрами и возвращает объект Generator (генератор).\nПозволяет одним вызовом загружать произвольное число сущностей с фильтрацией по параметрам в виде массива объектов\nи контролировать прогресс выполнения загрузки.  \n\nРеализует быстрый алгоритм, описанный в статье [\"Как правильно выгружать большие объемы данных\"](https://dev.1c-bitrix.ru/rest_help/rest_sum/start.php). \nИспользование асинхронного генератора дает существенную экономию памяти при обработке большого количества сущностей.\n\n- `fetchList(listMethod [, params = {}, dataExtractor = null, idKey = 'ID' ]);`  \n    Параметры:\n    - *string* `listMethod` - строка, указывающая вызываемый списочный метод REST-сервиса;\n    - *object* `params` - объект параметров для списочного метода REST-сервиса;\n    - *function* `dataExtractor` - функция для извлечения данных из результатов запроса;\n    - *string* `idKey` - имя поля ID загружаемых сущностей (`ID` - CRM или `id`).\n\n```js\n(async () =\u003e {\n    let bx24 = new BX24Wrapper();\n\n    // Устанавливаем собственную функцию для вывода в веб-консоль прогресса выполнения запросов в процентах\n    bx24.progress = percent =\u003e console.log(`progress: ${percent}%`);\n\n    let params = {\n        filter: { CATALOD_ID: 21 }\n    };\n\n    // Загружем список всех товаров в заданном товарном каталоге CRM, используя асинхронный генератор\n    let generator = bx24.fetchList('crm.product.list', params);\n    for await (let products of generator) {\n        for (let product of products) {\n            console.log('Product:', product);\n        }\n    }\n\n    params = {\n        filter: { iblockId: 11 },\n        select: [ '*', 'id', 'iblockId' ]\n    };    \n    \n    // Задаем собственную функцию для извлечения массива товаров из объекта с результатами запроса   \n    let dataExtractor = data =\u003e data.products;\n    \n    // Задаем имя поля ID загружаемых сущностей (товаров) в результатах запроса\n    let idKey = 'id';\n\n    // Загружем список всех товаров в заданном товарном каталоге, используя асинхронный генератор\n    generator = bx24.fetchList('catalog.product.list', params, dataExtractor, idKey);\n    for await (let products of generator) {\n        for (let product of products) {\n            console.log('Product:', product);\n        }\n    }\n        \n})().catch(error =\u003e console.log('Error:', error));\n```\n\n\u003ca id=\"%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-async-callbatch\"\u003e\u003c/a\u003e\n### Метод `async callBatch()`\n\nОтправляет пакет запросов к REST-сервису с максимальным числом команд в запросе 50 и возвращает Promise (промис).\nПозволяет получить результаты пакетного выполнения запросов в виде массива или объекта.\nОбертка метода [callBatch](https://dev.1c-bitrix.ru/rest_help/js_library/rest/callBatch.php) стандартной библиотеки Битрикс24.\n\n- `callBatch(calls [, haltOnError = true, dataExtractor = null ]);`  \n    Параметры:\n    - *array|object* `calls` - пакет запросов в виде массива или объекта;\n    - *bool* `haltOnError` - флаг \"прерывать исполнение пакета в при возникновении ошибки\";\n    - *function* `dataExtractor` - функция для извлечения данных из результатов запроса.\n\n```js\n(async () =\u003e {\n    let bx24 = new BX24Wrapper();\n\n    // Пакет запросов в виде массива с максимальным числом команд в запросе 50\n    let calls = [\n        [ 'crm.deal.get', { id: 2880 } ],\n        [ 'crm.contact.get', { id: 8 } ],\n        [ 'crm.company.get', { id: 6 } ]\n    ];\n\n    // Отправляем пакет запросов в виде массива\n    let response = await bx24.callBatch(calls, false);\n    console.log('Response array:', response);\n\n    // Пакет запросов в виде объекта с максимальным числом команд в запросе 50\n    calls = {\n        get_deal: [ 'crm.deal.get', { id: 2880 } ],\n        get_company: [ 'crm.company.get', { id: '$result[get_deal][COMPANY_ID]' } ],\n        get_contact: [ 'crm.contact.get', { id: '$result[get_deal][CONTACT_ID]' } ]\n    };\n\n    // Отправляем пакет запросов в виде объекта\n    response = await bx24.callBatch(calls);\n    console.log('Response object:', response);\n\n})().catch(error =\u003e console.log('Error:', error));\n```\n\n\u003ca id=\"%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-async-calllongbatch\"\u003e\u003c/a\u003e\n### Метод `async callLongBatch()`\n\nОтправляет пакет запросов к REST-сервису в виде массива с произвольным числом команд в запросе и возвращает Promise (промис).\nПозволяет получить результаты пакетного выполнения запросов в виде массива.\n\n- `callLongBatch(calls [, haltOnError = true, dataExtractor = null ]);`  \n    Параметры:\n    - *array* `calls` - пакет запросов в виде массива;\n    - *bool* `haltOnError` - флаг \"прерывать исполнение пакета в при возникновении ошибки\";\n    - *function* `dataExtractor` - функция для извлечения данных из результатов запроса. \n\n```js\n(async () =\u003e {\n    let bx24 = new BX24Wrapper();\n\n    // Длинный пакет запросов в виде массива с произвольным числом команд в запросе\n    let calls = [\n        [ 'crm.deal.get', { id: 2880 } ],\n        [ 'crm.contact.get', { id: 8 } ],\n        [ 'crm.company.get', { id: 6 } ],\n        [ 'crm.product.get', { id: 1 } ]\n    ];\n\n    // Отправляем длинный пакет запросов в виде массива\n    let response = await bx24.callLongBatch(calls);\n    console.log('Response array:', response);\n\n})().catch(error =\u003e console.log('Error:', error));\n```\n\n\u003ca id=\"%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-async-calllargebatch\"\u003e\u003c/a\u003e\n### Метод `async *callLargeBatch()`\n\nОтправляет пакет запросов к REST-сервису в виде массива с произвольным числом команд в запросе и возвращает Generator (генератор).\nПозволяет получить результаты пакетного выполнения запросов в виде массива.\nИспользование асинхронного генератора дает существенную экономию памяти при работе с длинными пакетами запросов.\n\n- `callLargeBatch(calls [, haltOnError = true, dataExtractor = null ]);`  \n    Параметры:\n    - *array* `calls` - пакет запросов в виде массива;\n    - *bool* `haltOnError` - флаг \"прерывать исполнение пакета в при возникновении ошибки\";\n    - *function* `dataExtractor` - функция для извлечения данных из результатов запроса. \n\n```js\n(async () =\u003e {\n    let bx24 = new BX24Wrapper();\n\n    // Длинный пакет запросов в виде массива с произвольным числом команд в запросе\n    let calls = [\n        [ 'crm.deal.get', { id: 2880 } ],\n        [ 'crm.contact.get', { id: 8 } ],\n        [ 'crm.company.get', { id: 6 } ],\n        [ 'crm.product.get', { id: 1 } ]\n    ];\n\n    // Отправляем длинный пакет запросов в виде массива, используя асинхронный генератор\n    let generator = bx24.callLargeBatch(calls, true);\n    for await (let response of generator) {\n        console.log('Response array:', response);\n    }\n\n})().catch(error =\u003e console.log('Error:', error));\n```\n\n\u003ca id=\"%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-static-createcalls\"\u003e\u003c/a\u003e\n### Метод `static createCalls()`\n\nСоздает пакет однотипных запросов для методов `callBatch()`, `callLongBatch()` и `callLargeBatch()`\nи возвращает пакет запросов в виде массива.\n\n- `BX24Wrapper.createCalls(method, items);`  \n    Параметры:\n    - *string* `method` - строка, указывающая вызываемый метод REST-сервиса во всех запросах;\n    - *array* `items` - массив параметров запросов.\n\n```js\n(async () =\u003e {\n    let bx24 = new BX24Wrapper();\n\n    // Массив параметров однотипных запросов\n    let items = [\n        { id: 4 },\n        { id: 6 },\n        { id: 8 }\n    ];\n\n    // Создаем пакет запросов в виже массива\n    let calls = BX24Wrapper.createCalls('crm.contact.get', items);\n\n    // Отправляем пакет запросов в виде массива\n    let response = await bx24.callBatch(calls);\n    console.log('Response:', response);\n  \n})().catch(error =\u003e console.log('Error:', error));\n```\n\n\n\u003ca id=\"%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-getlastresult\"\u003e\u003c/a\u003e\n### Метод `getLastResult()`\n\nВозвращает последний объект [ajaxResult](https://dev.1c-bitrix.ru/rest_help/js_library/rest/callMethod.php),\nполученный от стандартной библиотеки Битрикс24.\n\n- `getLastResult();`\n\n\n\u003ca id=\"%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA\"\u003e\u003c/a\u003e\n## Обработка ошибок\n\nПри возникновении ошибок в методах класса выбрасываются исключения.  \nПоследний объект [ajaxResult](https://dev.1c-bitrix.ru/rest_help/js_library/rest/callMethod.php),\nполученный от стандартной библиотеки Битрикс24, может быть получен посредством метода `getLastResult()`.\n\n```js\n(async () =\u003e {\n\n    let bx24 = new BX24Wrapper();\n\n    // Загружаем несуществующую компанию по её ID и перехватываем возникающее исключение\n    let company = await bx24.callMethod('crm.company.get', { ID: 9999999999 })\n        .catch(error =\u003e {\n            console.log('Error:', error);\n            \n            // Получаем последний объект ajaxResult, полученный от стандартной библиотеки Битрикс24\n            let ajaxResult = bx24.getLastResult();\n            console.log('ajaxResult:', ajaxResult);\n        });\n\n})().catch(error =\u003e console.log('Error:', error));\n```\n\n\u003ca id=\"%D0%B0%D0%B2%D1%82%D0%BE%D1%80\"\u003e\u003c/a\u003e\n## Автор\n\n© 2019-2023 andrey-tech\n\n\u003ca id=\"%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F\"\u003e\u003c/a\u003e\n## Лицензия\n\nДанный класс распространяется на условиях лицензии [MIT](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrey-tech%2Fbx24-wrapper-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrey-tech%2Fbx24-wrapper-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrey-tech%2Fbx24-wrapper-js/lists"}