feat: добавить ручной runtime-клиент

- добавлен корневой runtime export HttpClient и createApiClient
- настроена сборка JS и d.ts для публичного API пакета
- добавлен тест ручной сборки operations через createApiClient
- добавлена документация по ручному клиенту без OpenAPI
- версия пакета поднята до 5.1.0
This commit is contained in:
2026-07-03 10:51:56 +03:00
parent b8bb267848
commit 75bd97e8f9
8 changed files with 698 additions and 4 deletions

View File

@@ -343,6 +343,66 @@ await api.users.getAll(
);
```
## Ручной Клиент Без OpenAPI
Если в проекте нет OpenAPI спецификации, можно использовать `HttpClient` напрямую из пакета и писать operation-функции вручную тем же стилем, который использует generated SDK.
В этом сценарии `@gromlab/api-codegen` должен быть зависимостью проекта:
```bash
bun add @gromlab/api-codegen
```
Пример ручной операции:
```typescript
import {
ContentType,
HttpClient,
createApiClient,
type ApiRequestClient,
type RequestParams,
} from '@gromlab/api-codegen';
type User = {
id: string;
email: string;
};
type CreateUserPayload = {
email: string;
};
export const createUser = (
http: ApiRequestClient,
body: CreateUserPayload,
requestParams: RequestParams = {},
) =>
http.request<User>({
path: '/users',
method: 'POST',
body,
type: ContentType.Json,
format: 'json',
secure: true,
...requestParams,
});
const http = new HttpClient({
baseUrl: 'https://api.example.com',
});
export const api = createApiClient(http, {
users: {
create: createUser,
},
});
const user = await api.users.create({ email: 'user@example.com' });
```
Ручной режим не связан с автогенерацией. Если вы запускаете `npx @gromlab/api-codegen` и генерируете REST SDK из OpenAPI, generated-код по-прежнему содержит и экспортирует собственные `HttpClient`, `createApiClient`, types и operations без runtime-зависимости от `@gromlab/api-codegen`.
## API Как npm-Пакет
Типичный workflow: