@cabstar/protocol (0.3.0)
Installation
@cabstar:registry=npm install @cabstar/protocol@0.3.0"@cabstar/protocol": "0.3.0"About this package
@cabstar/protocol
Общие DTO и типы для общения клиентов с Cabstar API.
Используется в cabstar-api, cabstar-web и будущих клиентах (mobile, ws).
Установка
Из монорепозитория (локально):
npm install file:../cabstar-protocol
Из registry:
npm install @cabstar/protocol
Сборка
npm run build
Публикация в npm registry
Пакет публикуется в packages.
Перед первым пушем авторизуйся:
npm login --registry=https://git.serverbox.dev/api/packages/anton/npm/
Или скопируй .npmrc.example → .npmrc и укажи токен.
Публикация:
npm run npm:push
Структура
src/
├── auth/ # LoginRequest, LoginResponse, UserDto
├── assets/ # AssetDto, VehicleTypesResponse (v0.1)
├── car-types/ # CarTypeDto, CreateCarTypeRequest
├── tenants/ # TenantDto — вид бизнеса (taxi, yacht_rental, car_rental)
├── service-modes/ # ServiceModeDto — способ оказания (trip, stroll, rental)
├── service-levels/ # ServiceLevelDto — уровень сервиса (economy, premium, vip)
├── operator-memberships/ # OperatorMembershipDto — участие user в tenant (driver/captain)
├── rental-assets/ # RentalAssetDto — физический флот (авто/яхта)
├── rental-rates/ # RentalRateDto — тарифы аренды за период
├── app/ # AppInfoResponse
├── health/ # HealthResponse
├── locales/ # LocalesResponse
└── common/ # SupportedLocale, ApiErrorResponse
tenant определяет бизнес-линию сервиса. Конфигурация (assets) — полная комбинация из пяти измерений: tenant + service mode + service level + car type + seats. Tenant-specific правила валидации — отдельная задача.
operator-memberships связывает пользователя с тенантом как водитель (driver) или капитан (captain). Один пользователь может участвовать в нескольких тенантах. Поле operatorMemberships в UserDto — для профиля (/auth/me).
rental-assets — конкретные автомобили и яхты в аренде (kind: car | yacht). rental-rates — несколько тарифов на единицу (сумма + unit: hour/day/week/month). Отдельно от assets (абстрактные конфигурации такси).
Пример
import type {
LoginRequest,
LoginResponse,
VehicleTypesResponse,
} from '@cabstar/protocol';
const credentials: LoginRequest = {
email: 'admin@cabstar.local',
password: 'admin123',
};
const assets: VehicleTypesResponse = await fetch('/api/v0.1/assets').then(
(response) => response.json(),
);
Версионирование
Константы базового пути:
import { API_VERSION, API_BASE_PATH } from '@cabstar/protocol';
// API_VERSION === '0.1'
// API_BASE_PATH === 'api/v0.1'
Все клиенты должны обращаться к http://<host>/${API_BASE_PATH}/....
Dependencies
Development dependencies
| ID | Version |
|---|---|
| typescript | ^5.7.3 |