npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

pachca

v1.0.1

Published

Клиент для работы с API Пачки с поддержкой TypeScript

Readme

pachca

npm Размер минимизированного пакета с gzip Статус сборки Лицензия

pachca это полностью типизированный, лёгкий и современный JS клиент для мессенджера Пачка. Документация к API Пачки доступна здесь.

Использование

Установка

npm

npm i pachca

pnpm

pnpm add pachca

Yarn

yarn add pachca

bun

bun add pachca

Deno

import { Pachca } from "https://esm.sh/pachca";

Пример использования

import { CustomPropertyEntityType, Pachca } from "pachca";

const pachca = new Pachca({
  accessToken: process.env.PACHCA_ACCESS_TOKEN!, // Токен доступа
});

const { data } = await pachca.customProperties.get({ entity_type: CustomPropertyEntityType.User }); // Получаем все дополнительные поля для пользователей

data.at(0).name; // Результат типизирован

Документация

Библиотека использует Web APIs, т.е. fetch, FormData, Blob и т.п. Для использования библиотеки в средах, которые не поддерживают Web APIs, необходимо использовать полифиллы.

Экспорты библиотеки доступны только в формате ESM.

Инициализация

/**
 * Опции создания API клиента
 */
export interface ApiClientOptions {
  /**
   * Базовый URL API
   * @default https://api.pachca.com/api/shared/v1
   */
  baseUrl?: string;

  /**
   * Токен доступа
   * @see https://crm.pachca.com/dev/getting-started/requests-and-responses/
   */
  accessToken: string;

  /**
   * Заголовок User-Agent в запросах
   * @default pachca/${version} (+https://github.com/MonsterDeveloper/pachca)
   */
  userAgent?: string;

  /** ID пользователя/бота, которому принадлежит токен */
  userId?: number;
}

const pachca = new Pachca({
  // Опции
});

Работа с API

В классе Pachca есть эндпоинты для запросов к API, которые названы в соответствии с URL, описанными в документации Пачки. Доступные эндпоинты описаны в разделе Функционал. Методы эндпоинты названы в соответствии с HTTP методами, которые они используют.

// Получить список сотрудников
const { data: users } = await pachca.users.get();

// Получить сотрудника по id
const { data: user } = await pachca.users.getById(1);

// Удалить сотрудника
await pachca.users.delete(1);

// Обновить беседу или канал
const { data: chat } = await pachca.chats.put(1, { chat: { name: "Новое название" } });

Обработка ошибок

Для удобства библиотека экспортирует кастомные классы ошибок:

  • PachcaError — общая ошибка Пачки
  • PachcaClientError — клиентская ошибка, которая происходит при ответе с кодом 4xx. Пояснения доступны в документации Пачки
try {
  await pachca.chats.post({ chat: { name: "Новая беседа" } });
} catch (error) {
  if (error instanceof PachcaClientError) {
    console.log(error.errors[0].message);
  } else if (error instanceof PachcaError) {
    console.log(error.response?.status);
  }
}

Также во избежание Callback Hell, можно использовать @open-draft/until:

import { until } from "@open-draft/until";

async function getChatById(id: number) {
  const { error, data } = await until(() => pachca.chats.getById(id));

  if (error) {
    // обработать ошибку
    return;
  }

  return data;
}

Загрузка файлов

Пример для Bun:

const file = Bun.file("test-pachca.txt");

const uploadsData = await pachca.uploads.post();

await pachca.uploads.postFile(file, uploadsData);

Contributing

Пожалуйста, прочитайте гайд перед тем как отправлять PR.

Лицензия

Библиотека лицензирован GPL-3.0.

Функционал