Утилиты
api.getProcessStats
Возвращает загрузку CPU и RAM этого worker-процесса аддона. Дополнительные права не нужны.
| Поле | Тип | Примечание |
|---|---|---|
cpuPercent |
number |
CPU с момента предыдущего вызова (первый вызов — 0) |
ramMb |
number |
Resident memory в мегабайтах |
pid |
number |
PID worker-процесса этого аддона |
Подходит для самодиагностики, оптимизации или автоматического восстановления (например, перезапуск при превышении лимита памяти). Можно сочетать с api.restart() или очисткой внутренних кэшей.
const MAX_RAM_MB = 512;
setInterval(() => {
const stats = api.getProcessStats();
console.log('Worker usage', stats);
if (stats.ramMb > MAX_RAM_MB) {
console.warn('Memory limit exceeded, restarting worker');
api.restart();
}
}, 10_000);
Те же метрики отображаются в списках аддонов в настройках StreamKit+ (PID в UI — только в режиме разработчика).
isDeveloperMode
true, когда приложение запущено без упаковки (dev-сборка) или пользователь включил Режим разработчика в настройках. Используйте для дополнительного логирования или отладочных эндпоинтов; при false сохраняйте обычное поведение. Смена настройки требует перезапуска приложения/воркера.
if (isDeveloperMode) {
console.log('Debug info', params);
}
ADDON_TMP_DIR
Абсолютный путь к scratch-папке аддона в temp ОС:
{os.tmpdir()}/StreamKitPlusAddons/{addonId}
Создаётся автоматически при старте воркера. Если в addonId есть / (например ORG/REPO), получаются вложенные папки. Пути внутри не требуют files.requestAccess. Используйте с files.* (FILE_ACCESS) или ytdlp.downloadFile. Обработчик эндпоинта может вернуть { file: pathInsideTmp }, чтобы отдать медиа в веб-UI аддона.
const sep = ADDON_TMP_DIR.includes('\\') ? '\\' : '/';
const out = `${ADDON_TMP_DIR}${sep}clip.%(ext)s`;
await ytdlp.downloadFile(url, out, { format: 'ba/bestaudio', extractAudio: true, audioFormat: 'm4a' });
console
log, error, warn, info — с префиксом [Addon {id}].
Таймеры
| API | Примечания |
|---|---|
setTimeout(fn, delay, ...args) |
Ошибки перехватываются; delay передаётся в Node как есть |
setInterval(fn, interval, ...args) |
Ошибки перехватываются; interval передаётся в Node как есть |
clearTimeout / clearInterval |
Стандартное поведение |
sleep(ms) |
Promise-задержка |
random
const n = random.number(1, 6);
const id = random.id();
crypto
const { verifier, challenge } = crypto.createPkce();
const ok = crypto.verifyRsaSha256(publicKeyPem, message, signatureBase64);
URL и URLSearchParams
Реализации, безопасные для песочницы, для разбора и сборки URL внутри кода аддона.
require(name)
Доступен только с разрешением ROOT. Иначе выбрасывает исключение.