nirvana-grpc-contracts
v1.0.4
Published
Protocol Buffers contracts for Nirvana
Readme
@nirvana/contracts
Protocol Buffers контракты для платформы Nirvana.
Описание
Этот пакет содержит определения .proto файлов и автоматически генерируемый TypeScript код для взаимодействия между микросервисами платформы Nirvana. Используется ts-proto для генерации типобезопасного кода, совместимого с NestJS.
Установка
npm install @nirvana/contractsСтруктура проекта
contracts/
├── proto/ # Исходные .proto файлы
│ └── auth.proto # Контракты сервиса аутентификации
├── gen/ # Автоматически сгенерированный TypeScript код
│ └── auth.ts
└── package.jsonДоступные контракты
Auth Service
Сервис аутентификации с методами:
SendOtp- Отправка одноразового пароля
Пример использования:
import { SendOtpRequest, SendOtpResponse, AuthServiceClient } from '@nirvana/contracts/gen/auth';
// В NestJS микросервисе
const request: SendOtpRequest = {
identifier: '[email protected]',
type: 'email'
};
const response: SendOtpResponse = await authService.sendOtp(request);Разработка
Требования
- Node.js >= 16
- Protocol Buffers компилятор (
protoc)
Установка зависимостей
npm installГенерация TypeScript кода
После изменения .proto файлов необходимо перегенерировать TypeScript код:
npm run generateОчистка сгенерированных файлов
npm run cleanДобавление новых контрактов
- Создайте новый
.protoфайл в директорииproto/ - Определите ваши сообщения и сервисы согласно Protocol Buffers синтаксису
- Запустите генерацию:
npm run generate - Сгенерированный TypeScript код появится в директории
gen/
Пример структуры .proto файла
syntax = "proto3";
package your_service.v1;
service YourService {
rpc YourMethod (YourRequest) returns (YourResponse);
}
message YourRequest {
string field = 1;
}
message YourResponse {
bool success = 1;
}CI/CD
Пакет автоматически публикуется в NPM при изменениях через GitHub Actions workflow.
Лицензия
ISC
