erp-suite/apps/shared-libs/core/index.ts

154 lines
3.0 KiB
TypeScript

/**
* ERP-Suite Core Library
*
* Shared types, interfaces, and base classes for all ERP-Suite modules.
*
* @module @erp-suite/core
*
* @example
* ```typescript
* import {
* BaseTypeOrmService,
* ServiceContext,
* PaginatedResult,
* BaseEntity,
* createAuthMiddleware,
* } from '@erp-suite/core';
* ```
*/
// Types
export {
PaginationOptions,
PaginationMeta,
PaginatedResult,
createPaginationMeta,
} from './types/pagination.types';
// Interfaces
export {
IBaseService,
ServiceContext,
QueryOptions,
} from './interfaces/base-service.interface';
export {
IRepository,
IReadOnlyRepository,
IWriteOnlyRepository,
IUserRepository,
ITenantRepository,
IAuditRepository,
IConfigRepository,
AuditLogEntry,
ConfigEntry,
} from './interfaces/repository.interface';
// Entities
export { BaseEntity } from './entities/base.entity';
export { User } from './entities/user.entity';
export { Tenant } from './entities/tenant.entity';
// Services
export { BaseTypeOrmService } from './services/base-typeorm.service';
// Auth Service (P0-014: Centralized)
export {
AuthService,
createAuthService,
LoginDto,
RegisterDto,
LoginResponse,
AuthTokens,
AuthUser,
JwtPayload,
AuthServiceConfig,
AuthUnauthorizedError,
AuthValidationError,
AuthNotFoundError,
splitFullName,
buildFullName,
} from './services/auth.service';
// Middleware
export {
createAuthMiddleware,
AuthGuard,
AuthRequest,
AuthMiddlewareConfig,
} from './middleware/auth.middleware';
export {
createTenantMiddleware,
TenantInterceptor,
TenantRequest,
TenantMiddlewareConfig,
} from './middleware/tenant.middleware';
// Factories
export {
RepositoryFactory,
createRepositoryFactory,
InjectRepository,
RepositoryNotFoundError,
RepositoryAlreadyRegisteredError,
} from './factories/repository.factory';
// Constants
export {
DB_SCHEMAS,
AUTH_TABLES,
ERP_TABLES,
INVENTORY_TABLES,
SALES_TABLES,
PURCHASE_TABLES,
ACCOUNTING_TABLES,
HR_TABLES,
CRM_TABLES,
COMMON_COLUMNS,
STATUS,
getFullTableName,
} from './constants/database.constants';
// Database RLS Policies
export {
applyTenantIsolationPolicy,
applyAdminBypassPolicy,
applyUserDataPolicy,
applyCompleteRlsPolicies,
applyCompletePoliciesForSchema,
batchApplyRlsPolicies,
enableRls,
disableRls,
isRlsEnabled,
listRlsPolicies,
dropRlsPolicy,
dropAllRlsPolicies,
getSchemaRlsStatus,
setRlsContext,
clearRlsContext,
withRlsContext,
RlsPolicyType,
RlsPolicyOptions,
RlsPolicyStatus,
} from './database/policies/apply-rls';
// Error Handling
export {
BaseError,
ErrorResponse,
BadRequestError,
UnauthorizedError,
ForbiddenError,
NotFoundError,
ConflictError,
ValidationError,
InternalServerError,
GlobalExceptionFilter,
createErrorMiddleware,
errorMiddleware,
notFoundMiddleware,
ErrorLogger,
ErrorMiddlewareOptions,
} from './errors';