1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 19:00:23 +01:00
effigenix/frontend/packages/api-client/src/index.ts
Sebastian Frick ec736cf294 feat(frontend): TUI-Screens für Rezept-Filter, Archivierung und Chargen-Einbuchung
Production: Rezeptliste mit Status-Filter (Draft/Active/Archived), Rezept
archivieren für aktive Rezepte, list() gibt RecipeSummaryDTO zurück.
Inventory: Charge einbuchen (AddBatch) mit neuem Stocks-Resource und Screens.
2026-02-19 22:54:56 +01:00

159 lines
5.4 KiB
TypeScript

/**
* @effigenix/api-client
*
* Type-safe HTTP client for the Effigenix ERP API.
*
* Usage:
*
* ```ts
* import { createEffigenixClient } from '@effigenix/api-client';
*
* const client = createEffigenixClient(tokenProvider);
* const users = await client.users.list();
* ```
*/
export { createApiClient } from './client.js';
export type { TokenProvider } from './token-provider.js';
export { createAuthResource } from './resources/auth.js';
export { createUsersResource } from './resources/users.js';
export { createRolesResource } from './resources/roles.js';
export { createCategoriesResource } from './resources/categories.js';
export { createSuppliersResource } from './resources/suppliers.js';
export { createArticlesResource } from './resources/articles.js';
export { createCustomersResource } from './resources/customers.js';
export { createStorageLocationsResource } from './resources/storage-locations.js';
export { createRecipesResource } from './resources/recipes.js';
export { createStocksResource } from './resources/stocks.js';
export {
ApiError,
AuthenticationError,
NetworkError,
RefreshTokenExpiredError,
} from './errors.js';
export type { ValidationErrorDetail } from './errors.js';
// Auth types (no generated alias, stay in resource)
export type {
LoginRequest,
LoginResponse,
RefreshTokenRequest,
AuthResource,
} from './resources/auth.js';
// Types from @effigenix/types (generated OpenAPI aliases)
export type {
UserDTO,
RoleDTO,
CreateUserRequest,
UpdateUserRequest,
ChangePasswordRequest,
AssignRoleRequest,
SupplierDTO,
AddressDTO,
ContactInfoDTO,
PaymentTermsDTO,
QualityCertificateDTO,
SupplierRatingDTO,
CreateSupplierRequest,
UpdateSupplierRequest,
RateSupplierRequest,
AddCertificateRequest,
RemoveCertificateRequest,
ProductCategoryDTO,
CreateCategoryRequest,
UpdateCategoryRequest,
ArticleDTO,
SalesUnitDTO,
CreateArticleRequest,
UpdateArticleRequest,
AddSalesUnitRequest,
UpdateSalesUnitPriceRequest,
CustomerDTO,
DeliveryAddressDTO,
FrameContractDTO,
ContractLineItemDTO,
CreateCustomerRequest,
UpdateCustomerRequest,
AddDeliveryAddressRequest,
SetFrameContractLineItem,
SetFrameContractRequest,
StorageLocationDTO,
TemperatureRangeDTO,
CreateStorageLocationRequest,
UpdateStorageLocationRequest,
RecipeDTO,
RecipeSummaryDTO,
IngredientDTO,
ProductionStepDTO,
CreateRecipeRequest,
AddRecipeIngredientRequest,
AddProductionStepRequest,
StockBatchDTO,
AddStockBatchRequest,
} from '@effigenix/types';
// Resource types (runtime, stay in resource files)
export type { UsersResource } from './resources/users.js';
export type { RolesResource } from './resources/roles.js';
export type { CategoriesResource } from './resources/categories.js';
export type { SuppliersResource, SupplierStatus } from './resources/suppliers.js';
export type { ArticlesResource, ArticleStatus, Unit, PriceModel } from './resources/articles.js';
export { UNIT_LABELS, PRICE_MODEL_LABELS } from './resources/articles.js';
export type {
CustomersResource,
CustomerType,
CustomerStatus,
CustomerPreference,
DeliveryRhythm,
} from './resources/customers.js';
export { CUSTOMER_PREFERENCE_LABELS, DELIVERY_RHYTHM_LABELS } from './resources/customers.js';
export type {
StorageLocationsResource,
StorageType,
StorageLocationFilter,
} from './resources/storage-locations.js';
export { STORAGE_TYPE_LABELS } from './resources/storage-locations.js';
export type { RecipesResource, RecipeType, RecipeStatus } from './resources/recipes.js';
export { RECIPE_TYPE_LABELS } from './resources/recipes.js';
export type { StocksResource, BatchType } from './resources/stocks.js';
export { BATCH_TYPE_LABELS } from './resources/stocks.js';
import { createApiClient } from './client.js';
import { createAuthResource } from './resources/auth.js';
import { createUsersResource } from './resources/users.js';
import { createRolesResource } from './resources/roles.js';
import { createCategoriesResource } from './resources/categories.js';
import { createSuppliersResource } from './resources/suppliers.js';
import { createArticlesResource } from './resources/articles.js';
import { createCustomersResource } from './resources/customers.js';
import { createStorageLocationsResource } from './resources/storage-locations.js';
import { createRecipesResource } from './resources/recipes.js';
import { createStocksResource } from './resources/stocks.js';
import type { TokenProvider } from './token-provider.js';
import type { ApiConfig } from '@effigenix/config';
/**
* Convenience factory that creates a fully-configured Effigenix API client
* with all resource modules attached.
*/
export function createEffigenixClient(
tokenProvider: TokenProvider,
config: Partial<ApiConfig> = {},
) {
const axiosClient = createApiClient(config, tokenProvider);
return {
auth: createAuthResource(axiosClient),
users: createUsersResource(axiosClient),
roles: createRolesResource(axiosClient),
categories: createCategoriesResource(axiosClient),
suppliers: createSuppliersResource(axiosClient),
articles: createArticlesResource(axiosClient),
customers: createCustomersResource(axiosClient),
storageLocations: createStorageLocationsResource(axiosClient),
recipes: createRecipesResource(axiosClient),
stocks: createStocksResource(axiosClient),
};
}
export type EffigenixClient = ReturnType<typeof createEffigenixClient>;