0.1.1 • Published 9 months ago
@kiz8/common v0.1.1
@kiz8/common
Общие утилиты и компоненты для проектов Reputation Management.
Установка
pnpm add @kiz8/commonФункциональность
Провайдер зависимостей (DI)
Модуль предоставляет простую систему внедрения зависимостей для Inngest-функций.
import { getDependencyProvider } from '@kiz8/common';
const provider = getDependencyProvider();
await provider.init();
// Регистрация зависимостей
provider.register('serviceName', new MyService());
// Получение зависимостей
const service = provider.get<MyService>('serviceName');Базовый класс для Inngest-функций
Модуль включает базовый класс BaseInngestFunction и фабрику для создания Inngest-функций.
import {
BaseInngestFunction,
InngestContext,
InngestFunctionFactory
} from '@kiz8/common';
// Определение типа события
type MyEvent = {
data: {
id: string;
name: string;
}
};
// Создание класса функции
class MyFunction extends BaseInngestFunction<MyEvent> {
protected async handleEvent(
context: InngestContext<MyEvent>
): Promise<unknown> {
const { id, name } = context.event.data;
// Использование логгера
this.logger.info(`Processing event for ${name}`);
// Получение зависимостей
const service = this.getDependency<MyService>('serviceName');
// Обработка шагов
const result = await context.step.run('process-data', async () => {
return await service.process(id);
});
return { success: true, result };
}
}
// Создание функции Inngest
const myFunction = inngest.createFunction(
{ id: 'my-function', name: 'My Function' },
{ event: 'my.event' },
async (context) => {
const dependencyProvider = await getDependencyProvider();
const factory = new InngestFunctionFactory();
return factory.createFunction(MyFunction, dependencyProvider)(context);
}
);Разработка
Сборка
pnpm buildРазработка с автоматической пересборкой
pnpm devЛинтинг
pnpm lintЗапуск тестов
pnpm testСтруктура
src/dependency-injection.ts- провайдер зависимостейsrc/inngest.ts- базовые классы и интерфейсы для работы с Inngestsrc/index.ts- точка входа и реэкспорт
Совместимость
Модуль использует ESM модули с указанием расширений файлов в импортах. Для корректной работы требуется ESM-совместимая среда выполнения.