szdl-utils-kit 0.3.31 → 0.3.32

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.md CHANGED
@@ -319,6 +319,33 @@ const worker = new BackgroundWorker({
319
319
  - **`ensureAdminPlacements`** – для админа, обновляет фоновые встройки без запуска фонового цикла. `placement.unbind` и `placement.bind` выполняются одним `batch` (сначала отвязка, затем привязка), чтобы не оставлять портал без встройки между запросами.
320
320
  - **`ensureAdminPlacementsBeforeAppInit`** – опция конструктора: перед `appFunc` у админа вызвать `ensureAdminPlacements`. Можно передать `true` или функцию-условие `(worker) => boolean`.
321
321
 
322
+ ### loadBx24 — подключение BX24 с фолбэками
323
+
324
+ Библиотека BX24 подключается по цепочке: `//api.bitrix24.com/api/v1/` → `//api.bitrix24.tech/api/v1/` (по 3 секунды на каждый) → локальная копия, вшитая в utils-kit. Локальная копия лежит отдельным чанком и скачивается, только если оба удалённых источника не сработали.
325
+
326
+ `BxBoot.init()` вызывает `loadBx24()` сам — тег `<script src="//api.bitrix24.com/api/v1/">` в HTML больше не нужен (если он остался, загрузчик увидит готовый `BX24` и ничего не будет грузить). Для кода, который работает с `BX24` без `BxBoot`:
327
+
328
+ ```ts
329
+ import { loadBx24 } from "szdl-utils-kit";
330
+
331
+ const { source } = await loadBx24(); // "preloaded" | "com" | "tech" | "local"
332
+ BX24.init(() => { /* ... */ });
333
+ ```
334
+
335
+ Если скрипт загрузился, но BX24 не инициализировался (приложение открыто вне фрейма Битрикс24), остальные источники не перебираются — промис отклоняется с `Bx24EnvironmentError`.
336
+
337
+ Обновить локальную копию: `npm run update:bx24-local`.
338
+
339
+ #### Старые приложения (без обновления utils-kit)
340
+
341
+ `npm run build` дополнительно собирает самодостаточный файл `dist/legacy/bx24-loader.legacy.js` (та же логика + локальная копия BX24 внутри, без зависимостей). Положите его в статику приложения и замените им старый тег:
342
+
343
+ ```html
344
+ <script src="bx24-loader.legacy.js"></script>
345
+ ```
346
+
347
+ Загрузка асинхронная, поэтому до её завершения в `window.BX24` стоит заглушка, которая копит вызовы `BX24.init(cb)` и `BX24.install(cb)` и передаёт их настоящему BX24 после загрузки. Старый `BxBoot.init()` и inline-вызовы `BX24.init(...)` сразу после тега продолжают работать. Другие методы `BX24` до `init` вызывать нельзя. Промис загрузки доступен как `window.szdlBx24Ready`.
348
+
322
349
  ### tempus
323
350
 
324
351
  Функции для работы с датами и временем (библиотека [tempusjs](https://habr.com/ru/articles/204162/)). Используется внутри пакета, но может быть импортирована напрямую:
@@ -335,11 +362,12 @@ const formatted = tempus().format("%Y-%m-%d");
335
362
 
336
363
  - `types/batch.d.ts` – детальное описание Batch;
337
364
  - `types/bx-boot.d.ts`, `types/bx-helper.d.ts`, `types/bx-logger.d.ts`;
338
- - `types/background-worker.d.ts` – в том числе `BackgroundWorkerTiming`, `DEFAULT_BACKGROUND_WORKER_TIMING`.
365
+ - `types/background-worker.d.ts` – в том числе `BackgroundWorkerTiming`, `DEFAULT_BACKGROUND_WORKER_TIMING`;
366
+ - `types/bx24-loader.d.ts` – `loadBx24`, `Bx24EnvironmentError`.
339
367
 
340
368
  ## Разработка и публикация
341
369
 
342
370
  1. Вносите изменения в исходники.
343
- 2. Собирайте библиотеку `npm run build` (результат в `dist/`).
371
+ 2. Собирайте библиотеку `npm run build` (результат в `dist/`, legacy-загрузчик BX24 — в `dist/legacy/`).
344
372
  3. Авторизуйтесь в npm: `npm login`. Если требуется, запросите временный пароль на support@sozdavatel.ru.
345
373
  4. Публикуйте обновление: `npm run pub`. Скрипт автоматически увеличит версию (при необходимости можно указать вручную).