@bkeenke/shm-contract
v1.9.0
Published
API library for SHM (Service Hosting Manager). Can be used in backend and frontend.
Downloads
602
Readme
@bkeenke/shm-contract
TypeScript/Zod контракты для SHM API. Используется для типизации запросов и ответов API на фронтенде
Установка
npm install @bkeenke/shm-contract
# или
yarn add @bkeenke/shm-contractИспользование
Импорт типов и схем
import {
// Models (Zod schemas + types)
User,
UserSchema,
Service,
ServiceSchema,
// API routes
REST_API,
// Commands
AuthLoginCommand,
AdminGetUsersCommand,
// Constants
USER_SERVICE_STATUS,
SPOOL_STATUS,
} from '@bkeenke/shm-contract';Пример использования с axios
import axios from 'axios';
import { AuthLoginCommand, REST_API } from '@bkeenke/shm-contract';
async function login(credentials: AuthLoginCommand.Request) {
// Валидация входных данных
const validated = AuthLoginCommand.RequestSchema.parse(credentials);
const response = await axios.post(AuthLoginCommand.url, validated);
// Валидация ответа
return AuthLoginCommand.ResponseSchema.parse(response.data);
}Пример использования с TanStack Query
import { useQuery } from '@tanstack/react-query';
import { AdminGetUsersCommand } from '@bkeenke/shm-contract';
function useUsers() {
return useQuery({
queryKey: ['users'],
queryFn: async () => {
const response = await fetch(AdminGetUsersCommand.url);
const data = await response.json();
return AdminGetUsersCommand.ResponseSchema.parse(data);
},
});
}Структура пакета
@bkeenke/shm-contract/
├── api/ # API routes и controllers
│ ├── routes.ts # Все API маршруты
│ └── controllers.ts
├── constants/ # Константы
│ ├── user-service-status.constant.ts
│ ├── spool-status.constant.ts
│ └── http-method.constant.ts
├── models/ # Zod схемы и типы
│ ├── user.schema.ts
│ ├── service.schema.ts
│ ├── pay.schema.ts
│ └── ...
└── commands/ # API команды (контракты)
├── auth/
├── users/
├── services/
├── servers/
├── spool/
├── pay/
├── templates/
├── storage/
├── config/
├── promo/
└── telegram/API Routes
Все маршруты доступны через объект REST_API:
import { REST_API } from '@bkeenke/shm-contract';
// User routes
REST_API.USER.GET // GET /shm/v1/user
REST_API.USER.AUTH // POST /shm/v1/user/auth
REST_API.USER.SERVICE // GET/DELETE /shm/v1/user/service
// Admin routes
REST_API.ADMIN.USER.ROOT // CRUD /shm/v1/admin/user
REST_API.ADMIN.SERVICE.ROOT // CRUD /shm/v1/admin/service
REST_API.ADMIN.SERVER.ROOT // CRUD /shm/v1/admin/server
REST_API.ADMIN.SPOOL.ROOT // CRUD /shm/v1/admin/spool
REST_API.ADMIN.TEMPLATE.ROOT // CRUD /shm/v1/admin/template
REST_API.ADMIN.CONFIG.ROOT // CRUD /shm/v1/admin/config
REST_API.ADMIN.PROMO.ROOT // CRUD /shm/v1/admin/promoCommands (Контракты)
Каждая команда содержит:
url- URL эндпоинтаmethod- HTTP методRequestSchema- Zod схема запросаResponseSchema- Zod схема ответаRequest- TypeScript тип запросаResponse- TypeScript тип ответа
Auth Commands
AuthLoginCommand- АвторизацияAuthRegisterCommand- РегистрацияTelegramWebappAuthCommand- Авторизация через Telegram WebAppPasskeyAuthCommand- Авторизация через Passkey
User Commands
GetCurrentUserCommand- Получить текущего пользователяUpdateCurrentUserCommand- Обновить профильChangePasswordCommand- Сменить пароль
Admin Commands
AdminGetUsersCommand- Список пользователейAdminCreateUserCommand- Создать пользователяAdminGetServicesCommand- Список услугAdminGetServersCommand- Список серверовAdminGetSpoolCommand- Список задач- и другие...
Разработка
# Установка зависимостей
npm install
# Сборка
npm run build
# Watch mode
npm run devЛицензия
MIT
