Shared API types and base client for Edushade monorepo packages.
npm install @softimist/apiShared API types and base client for Edushade monorepo packages.
The BaseApiClient class uses axios internally and provides a foundation for module-specific API clients. Simply extend it and add your module-specific methods:
``typescript
import { BaseApiClient, type BaseApiClientConfig, type ServerResponse } from '@softimist/api';
interface WebsiteApiClientConfig extends BaseApiClientConfig {
// Add module-specific config if needed
}
class WebsiteApiClient extends BaseApiClient {
constructor(config: WebsiteApiClientConfig) {
super(config);
// BaseApiClient already handles axios setup, auth interceptors, and error handling
}
// Add module-specific methods
async getPages() {
return this.get
}
async getPageById(id: string) {
return this.get);
}
async createPage(data: CreatePageDto) {
return this.post
}
async updatePage(id: string, data: UpdatePageDto) {
return this.patch, data);
}
async deletePage(id: string) {
return this.delete);
}
}
// Usage
const client = new WebsiteApiClient({
baseURL: 'https://api.example.com',
getAuthToken: () => localStorage.getItem('token'),
});
const pages = await client.getPages();
`
Import types for use in your modules:
`typescript``
import type {
HttpClient,
ServerResponse,
ServerPaginatedResponse,
UsePaginatedApiReturn,
PaginationMeta,
} from '@softimist/api';