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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@kiz8/inngest-service

v0.1.0

Published

Сервис для обработки событий с использованием Inngest

Readme

@reputation-management/inngest-service

Сервис для обработки событий с использованием Inngest в системе управления репутацией.

Установка

npm install @reputation-management/inngest-service

или

yarn add @reputation-management/inngest-service

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

Этот пакет предоставляет сервис для обработки событий с использованием Inngest. Он может быть развернут как отдельное приложение или интегрирован в существующее приложение Next.js.

Запуск как отдельное приложение

# Установка зависимостей
npm install

# Запуск в режиме разработки
npm run dev

# Сборка для продакшена
npm run build

# Запуск в продакшене
npm start

Синхронизация функций Inngest

# Локальная синхронизация
npm run sync

# Синхронизация в продакшене
npm run sync:prod

Структура проекта

  • app/ - Код приложения Next.js
  • functions/ - Функции Inngest для обработки событий
  • events/ - Определения событий

Лицензия

MIT

Inngest Service для Reputation Management

Выделенный микросервис для обработки Inngest событий и задач в приложении Reputation Management.

Обзор

Этот микросервис обеспечивает:

  • Единый API endpoint для Inngest (/api/inngest)
  • Изолированную обработку фоновых и асинхронных задач
  • Чистую интеграцию с Inngest Cloud
  • Работу с базой данных через Prisma ORM

Схема взаимодействия

┌───────────────┐         ┌──────────────────┐         ┌────────────────┐
│               │         │                  │         │                │
│  Web/Admin    │─────────▶ inngest-client   │─────────▶  Inngest Cloud │
│  Приложения   │         │  (общий пакет)   │         │                │
│               │         │                  │         │                │
└───────────────┘         └──────────────────┘         └────────┬───────┘
                                                              │
                                                              │
                                                              ▼
┌───────────────┐         ┌──────────────────┐         ┌────────────────┐
│               │         │                  │         │                │
│    Worker     │◀────────│  inngest-service │◀────────│  Триггеры и    │
│  (обработка   │         │  (микросервис)   │         │   события      │
│   данных)     │         │                  │         │                │
│               │         │                  │         │                │
└───────────────┘         └──────────────────┘         └────────────────┘
         │                         │
         │                         │
         ▼                         ▼
┌───────────────────────────────────────────────┐
│                                               │
│             Базы данных и API                 │
│             (PostgreSQL/Neon)                 │
│                                               │
└───────────────────────────────────────────────┘

Поток данных

  1. Отправка событий:

    • Фронтенд-приложения (Web/Admin) или серверные компоненты используют @reputation-management/inngest-client для отправки событий в Inngest
    • События включают: создание отзывов, запросы на анализ, запросы отчетов и т.д.
  2. Обработка событий:

    • Inngest Cloud доставляет события микросервису inngest-service
    • Микросервис запускает соответствующие функции для обработки каждого события
    • Функции обрабатывают данные асинхронно и независимо от основного приложения
  3. Интеграция с Worker:

    • Для сложной обработки данных используется Worker сервис
    • Worker может быть вызван через Inngest или напрямую
  4. Результаты обработки:

    • После обработки события, микросервис может:
      • Отправить новые события в Inngest для дальнейшей обработки
      • Сохранить результаты в базу данных
      • Вызвать внешние API

Функции

  • Анализ отзывов - анализ текста отзывов, определение тональности и ключевых слов
  • Генерация отчетов - создание отчетов по заведениям на основе собранных данных
  • Скрапинг данных - сбор отзывов и информации о заведениях из различных источников

Основные типы событий

| Название события | Описание | Инициатор | Обработчик | | -------------------------- | ----------------------------------- | ----------- | -------------------- | | review/created | Создание нового отзыва | Web/Admin | analyze-review.ts | | review/analyze-requested | Запрос на анализ отзыва | Web/Admin | analyze-review.ts | | review/analyzed | Отзыв проанализирован | Inngest Svc | Client apps | | venue/scrape-requested | Запрос на скрапинг данных заведения | Web/Admin | scrape-venue.ts | | venue/scraped | Данные заведения собраны | Inngest Svc | Client apps | | report/requested | Запрос на генерацию отчета | Web/Admin | generate-report.ts | | report/generated | Отчет сгенерирован | Inngest Svc | Client apps | | test/event | Тестовое событие | Web/Admin | Любой обработчик |

Разработка

# Запуск в режиме разработки
pnpm dev

# Сборка
pnpm build

# Запуск тестов
pnpm test

# Проверка типов
pnpm typecheck

Интеграция Prisma с Vercel

Для правильной работы Prisma в Vercel serverless-окружении внесены специальные настройки:

  1. Автоматическая генерация Prisma клиента при каждом деплое:

    "scripts": {
      "vercel-build": "prisma generate && next build",
      "postinstall": "prisma generate"
    }
  2. Плагин для монорепозитория, который решает проблемы с отсутствием файлов Prisma engine:

    // next.config.js
    import { PrismaPlugin } from "@prisma/nextjs-monorepo-workaround-plugin";
    
    const nextConfig = {
      // ...
      webpack: (config, { isServer }) => {
        if (isServer) {
          config.plugins = [...config.plugins, new PrismaPlugin()];
        }
        return config;
      },
    };
  3. Connection pooling для эффективной работы в serverless-среде:

    • Используется NEONDB_URL_POOLING для пула соединений
    • Предотвращает исчерпание лимита соединений с базой данных

Деплой

Сервис настроен для деплоя на Vercel. Переменные окружения в vercel.json:

{
  "buildCommand": "pnpm run vercel-build",
  "env": {
    "INNGEST_SIGNING_KEY": "${INNGEST_SIGNING_KEY}",
    "INNGEST_EVENT_KEY": "${INNGEST_EVENT_KEY}",
    "NEXT_PUBLIC_VERCEL_URL": "${VERCEL_URL}",
    "NEONDB_URL": "${NEONDB_URL}",
    "DIRECT_DATABASE_URL": "${DIRECT_DATABASE_URL}",
    "NEONDB_URL_POOLING": "${NEONDB_URL_POOLING}"
  }
}

Переменные окружения для базы данных

  • NEONDB_URL - основное соединение с базой данных
  • DIRECT_DATABASE_URL - для миграций и прямого доступа
  • NEONDB_URL_POOLING - URL с пулом соединений для serverless-среды

Синхронизация с Inngest Cloud

После деплоя на Vercel необходимо выполнить синхронизацию с Inngest Cloud:

# Локальная синхронизация
pnpm sync

# Синхронизация продакшн версии
pnpm sync:prod

Интеграция с другими сервисами

Другие сервисы могут отправлять события в Inngest через общий клиент из пакета @reputation-management/inngest-client. Преимущества такого подхода:

  • Единые типы событий и интерфейсы между всеми сервисами
  • Централизованное управление событиями
  • Типобезопасность при отправке и обработке событий
  • Избегание дублирования кода

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

import { reviewEvents } from "@reputation-management/inngest-client";

// Отправка события
await reviewEvents.analyzeRequested({
  reviewId: "123",
  venueId: "456",
  text: "Отличное место, рекомендую!",
});

Структура проекта

apps/inngest-service/
├── app/                   # Next.js приложение
│   ├── api/               # API endpoints
│   │   └── inngest/       # Основной Inngest endpoint
│   │       └── route.ts
├── client.ts              # Реэкспорт клиента из общего пакета
├── events/                # Реэкспорт событий из общего пакета
│   └── index.ts
├── functions/             # Inngest функции
│   ├── analyze-review.ts  # Анализ отзывов
│   ├── generate-report.ts # Генерация отчетов
│   ├── scrape-venue.ts    # Скрапинг данных заведений
│   └── index.ts           # Экспорт всех функций
├── types.ts               # Реэкспорт типов из общего пакета
├── next.config.js         # Конфигурация Next.js с Prisma плагином
├── vercel.json            # Конфигурация Vercel
└── package.json           # Зависимости и скрипты

Зависимости

Основные зависимости:

  • @reputation-management/inngest-client: workspace:* - общий клиент для Inngest
  • @repo/database: workspace:* - пакет для работы с базой данных
  • @prisma/client: ^5.10.2 - клиент Prisma ORM
  • prisma: ^5.10.2 - инструменты Prisma CLI
  • @prisma/nextjs-monorepo-workaround-plugin: ^5.10.2 - плагин для корректной работы в монорепозитории
  • inngest: ^3.3.1 - библиотека для работы с Inngest
  • next: ^14.0.4 - фреймворк для приложения