@plyaz/core 1.1.1 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/dist/adapters/index.d.ts +16 -0
  2. package/dist/adapters/index.d.ts.map +1 -0
  3. package/dist/adapters/nestjs.d.ts +79 -0
  4. package/dist/adapters/nestjs.d.ts.map +1 -0
  5. package/dist/adapters/nextjs.d.ts +28 -0
  6. package/dist/adapters/nextjs.d.ts.map +1 -0
  7. package/dist/backend/example/example.controller.d.ts +121 -0
  8. package/dist/backend/example/example.controller.d.ts.map +1 -0
  9. package/dist/backend/example/example.module.d.ts +29 -0
  10. package/dist/backend/example/example.module.d.ts.map +1 -0
  11. package/dist/backend/example/index.d.ts +8 -0
  12. package/dist/backend/example/index.d.ts.map +1 -0
  13. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts +150 -0
  14. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts.map +1 -0
  15. package/dist/backend/featureFlags/config/feature-flag.config.d.ts +89 -0
  16. package/dist/backend/featureFlags/config/feature-flag.config.d.ts.map +1 -0
  17. package/dist/backend/featureFlags/config/validation.d.ts +181 -0
  18. package/dist/backend/featureFlags/config/validation.d.ts.map +1 -0
  19. package/dist/backend/featureFlags/decorators/feature-disabled.decorator.d.ts +6 -0
  20. package/dist/backend/featureFlags/decorators/feature-disabled.decorator.d.ts.map +1 -0
  21. package/dist/backend/featureFlags/decorators/feature-enabled.decorator.d.ts +8 -0
  22. package/dist/backend/featureFlags/decorators/feature-enabled.decorator.d.ts.map +1 -0
  23. package/dist/backend/featureFlags/decorators/feature-flag.decorator.d.ts +11 -0
  24. package/dist/backend/featureFlags/decorators/feature-flag.decorator.d.ts.map +1 -0
  25. package/dist/backend/featureFlags/feature-flag.controller.d.ts +14 -56
  26. package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -1
  27. package/dist/backend/featureFlags/feature-flag.module.d.ts +36 -44
  28. package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -1
  29. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts +33 -0
  30. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts.map +1 -0
  31. package/dist/backend/featureFlags/index.d.ts +14 -41
  32. package/dist/backend/featureFlags/index.d.ts.map +1 -1
  33. package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts +16 -0
  34. package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts.map +1 -0
  35. package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts +18 -0
  36. package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts.map +1 -0
  37. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts +162 -0
  38. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts.map +1 -0
  39. package/dist/backend/index.d.ts +5 -0
  40. package/dist/backend/index.d.ts.map +1 -1
  41. package/dist/base/cache/CacheKeyBuilder.d.ts +115 -0
  42. package/dist/base/cache/CacheKeyBuilder.d.ts.map +1 -0
  43. package/dist/base/cache/feature/caching.d.ts +16 -0
  44. package/dist/base/cache/feature/caching.d.ts.map +1 -0
  45. package/dist/base/cache/index.d.ts +2 -0
  46. package/dist/base/cache/index.d.ts.map +1 -1
  47. package/dist/base/cache/strategies/redis.d.ts.map +1 -1
  48. package/dist/base/observability/BaseAdapter.d.ts +79 -0
  49. package/dist/base/observability/BaseAdapter.d.ts.map +1 -0
  50. package/dist/base/observability/CompositeAdapter.d.ts +72 -0
  51. package/dist/base/observability/CompositeAdapter.d.ts.map +1 -0
  52. package/dist/base/observability/DatadogAdapter.d.ts +117 -0
  53. package/dist/base/observability/DatadogAdapter.d.ts.map +1 -0
  54. package/dist/base/observability/LoggerAdapter.d.ts +54 -0
  55. package/dist/base/observability/LoggerAdapter.d.ts.map +1 -0
  56. package/dist/base/observability/ObservabilityService.d.ts +160 -0
  57. package/dist/base/observability/ObservabilityService.d.ts.map +1 -0
  58. package/dist/base/observability/index.d.ts +17 -0
  59. package/dist/base/observability/index.d.ts.map +1 -0
  60. package/dist/domain/base/BaseBackendDomainService.d.ts +528 -0
  61. package/dist/domain/base/BaseBackendDomainService.d.ts.map +1 -0
  62. package/dist/domain/base/BaseDomainService.d.ts +284 -0
  63. package/dist/domain/base/BaseDomainService.d.ts.map +1 -0
  64. package/dist/domain/base/BaseFrontendDomainService.d.ts +493 -0
  65. package/dist/domain/base/BaseFrontendDomainService.d.ts.map +1 -0
  66. package/dist/domain/base/BaseMapper.d.ts +100 -0
  67. package/dist/domain/base/BaseMapper.d.ts.map +1 -0
  68. package/dist/domain/base/BaseValidator.d.ts +105 -0
  69. package/dist/domain/base/BaseValidator.d.ts.map +1 -0
  70. package/dist/domain/base/index.d.ts +10 -0
  71. package/dist/domain/base/index.d.ts.map +1 -0
  72. package/dist/domain/example/BackendExampleDomainService.d.ts +257 -0
  73. package/dist/domain/example/BackendExampleDomainService.d.ts.map +1 -0
  74. package/dist/domain/example/FrontendExampleDomainService.d.ts +164 -0
  75. package/dist/domain/example/FrontendExampleDomainService.d.ts.map +1 -0
  76. package/dist/domain/example/index.d.ts +10 -0
  77. package/dist/domain/example/index.d.ts.map +1 -0
  78. package/dist/domain/example/mappers/ExampleMapper.d.ts +67 -0
  79. package/dist/domain/example/mappers/ExampleMapper.d.ts.map +1 -0
  80. package/dist/domain/example/validators/ExampleValidator.d.ts +33 -0
  81. package/dist/domain/example/validators/ExampleValidator.d.ts.map +1 -0
  82. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts +86 -0
  83. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts.map +1 -0
  84. package/dist/domain/featureFlags/index.d.ts +10 -5
  85. package/dist/domain/featureFlags/index.d.ts.map +1 -1
  86. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts +72 -0
  87. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts.map +1 -0
  88. package/dist/domain/featureFlags/mappers/index.d.ts +8 -0
  89. package/dist/domain/featureFlags/mappers/index.d.ts.map +1 -0
  90. package/dist/domain/featureFlags/module.d.ts +20 -0
  91. package/dist/domain/featureFlags/module.d.ts.map +1 -0
  92. package/dist/domain/featureFlags/provider.d.ts +40 -1
  93. package/dist/domain/featureFlags/provider.d.ts.map +1 -1
  94. package/dist/domain/featureFlags/providers/api.d.ts +59 -34
  95. package/dist/domain/featureFlags/providers/api.d.ts.map +1 -1
  96. package/dist/domain/featureFlags/providers/database.d.ts +59 -52
  97. package/dist/domain/featureFlags/providers/database.d.ts.map +1 -1
  98. package/dist/domain/featureFlags/providers/factory.d.ts +50 -33
  99. package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -1
  100. package/dist/domain/featureFlags/providers/file.d.ts +48 -1
  101. package/dist/domain/featureFlags/providers/file.d.ts.map +1 -1
  102. package/dist/domain/featureFlags/providers/memory.d.ts +32 -6
  103. package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -1
  104. package/dist/domain/featureFlags/providers/redis.d.ts +6 -1
  105. package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -1
  106. package/dist/domain/featureFlags/service.d.ts +112 -0
  107. package/dist/domain/featureFlags/service.d.ts.map +1 -0
  108. package/dist/domain/index.d.ts +2 -0
  109. package/dist/domain/index.d.ts.map +1 -1
  110. package/dist/engine/featureFlags/engine.d.ts +8 -0
  111. package/dist/engine/featureFlags/engine.d.ts.map +1 -1
  112. package/dist/entry-backend.d.ts +24 -0
  113. package/dist/entry-backend.d.ts.map +1 -0
  114. package/dist/entry-backend.js +15635 -0
  115. package/dist/entry-backend.js.map +1 -0
  116. package/dist/entry-backend.mjs +15506 -0
  117. package/dist/entry-backend.mjs.map +1 -0
  118. package/dist/entry-frontend.d.ts +23 -0
  119. package/dist/entry-frontend.d.ts.map +1 -0
  120. package/dist/entry-frontend.js +11152 -0
  121. package/dist/entry-frontend.js.map +1 -0
  122. package/dist/entry-frontend.mjs +11089 -0
  123. package/dist/entry-frontend.mjs.map +1 -0
  124. package/dist/events/CoreEventManager.d.ts +116 -0
  125. package/dist/events/CoreEventManager.d.ts.map +1 -0
  126. package/dist/events/index.d.ts +27 -0
  127. package/dist/events/index.d.ts.map +1 -0
  128. package/dist/frontend/base/index.d.ts +8 -0
  129. package/dist/frontend/base/index.d.ts.map +1 -0
  130. package/dist/frontend/components/InitializationError.d.ts +25 -0
  131. package/dist/frontend/components/InitializationError.d.ts.map +1 -0
  132. package/dist/frontend/components/InitializationLoading.d.ts +22 -0
  133. package/dist/frontend/components/InitializationLoading.d.ts.map +1 -0
  134. package/dist/frontend/components/index.d.ts +9 -0
  135. package/dist/frontend/components/index.d.ts.map +1 -0
  136. package/dist/frontend/example/index.d.ts +9 -0
  137. package/dist/frontend/example/index.d.ts.map +1 -0
  138. package/dist/frontend/featureFlags/index.d.ts +28 -7
  139. package/dist/frontend/featureFlags/index.d.ts.map +1 -1
  140. package/dist/frontend/index.d.ts +5 -0
  141. package/dist/frontend/index.d.ts.map +1 -1
  142. package/dist/frontend/providers/ApiProvider.d.ts +41 -0
  143. package/dist/frontend/providers/ApiProvider.d.ts.map +1 -0
  144. package/dist/frontend/providers/PlyazProvider.d.ts +305 -0
  145. package/dist/frontend/providers/PlyazProvider.d.ts.map +1 -0
  146. package/dist/frontend/providers/index.d.ts +8 -0
  147. package/dist/frontend/providers/index.d.ts.map +1 -0
  148. package/dist/frontend/store/feature-flags.d.ts +63 -0
  149. package/dist/frontend/store/feature-flags.d.ts.map +1 -0
  150. package/dist/frontend/store/index.d.ts +14 -0
  151. package/dist/frontend/store/index.d.ts.map +1 -0
  152. package/dist/frontend/store/integrations.d.ts +36 -0
  153. package/dist/frontend/store/integrations.d.ts.map +1 -0
  154. package/dist/frontend/store/service-accessors.d.ts +78 -0
  155. package/dist/frontend/store/service-accessors.d.ts.map +1 -0
  156. package/dist/index.d.ts +6 -2
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +15450 -0
  159. package/dist/index.js.map +1 -0
  160. package/dist/index.mjs +13461 -2440
  161. package/dist/index.mjs.map +1 -1
  162. package/dist/init/CoreInitializer.d.ts +582 -0
  163. package/dist/init/CoreInitializer.d.ts.map +1 -0
  164. package/dist/init/ServiceRegistry.d.ts +256 -0
  165. package/dist/init/ServiceRegistry.d.ts.map +1 -0
  166. package/dist/init/index.d.ts +14 -0
  167. package/dist/init/index.d.ts.map +1 -0
  168. package/dist/init/nestjs/CoreModule.d.ts +63 -0
  169. package/dist/init/nestjs/CoreModule.d.ts.map +1 -0
  170. package/dist/init/nestjs/index.d.ts +5 -0
  171. package/dist/init/nestjs/index.d.ts.map +1 -0
  172. package/dist/init/nestjs/index.js +9059 -0
  173. package/dist/init/nestjs/index.js.map +1 -0
  174. package/dist/init/nestjs/index.mjs +9055 -0
  175. package/dist/init/nestjs/index.mjs.map +1 -0
  176. package/dist/init/react.d.ts +33 -0
  177. package/dist/init/react.d.ts.map +1 -0
  178. package/dist/models/example/ExampleRepository.d.ts +124 -0
  179. package/dist/models/example/ExampleRepository.d.ts.map +1 -0
  180. package/dist/models/example/index.d.ts +7 -0
  181. package/dist/models/example/index.d.ts.map +1 -0
  182. package/dist/models/featureFlags/FeatureFlagRepository.d.ts +560 -0
  183. package/dist/models/featureFlags/FeatureFlagRepository.d.ts.map +1 -0
  184. package/dist/models/featureFlags/index.d.ts +7 -0
  185. package/dist/models/featureFlags/index.d.ts.map +1 -0
  186. package/dist/models/index.d.ts +9 -0
  187. package/dist/models/index.d.ts.map +1 -0
  188. package/dist/services/ApiClientService.d.ts +178 -0
  189. package/dist/services/ApiClientService.d.ts.map +1 -0
  190. package/dist/services/CacheService.d.ts +176 -0
  191. package/dist/services/CacheService.d.ts.map +1 -0
  192. package/dist/services/DbService.d.ts +391 -0
  193. package/dist/services/DbService.d.ts.map +1 -0
  194. package/dist/services/NotificationService.d.ts +151 -0
  195. package/dist/services/NotificationService.d.ts.map +1 -0
  196. package/dist/services/StorageService.d.ts +144 -0
  197. package/dist/services/StorageService.d.ts.map +1 -0
  198. package/dist/services/index.d.ts +12 -0
  199. package/dist/services/index.d.ts.map +1 -0
  200. package/dist/utils/common/id.d.ts +83 -0
  201. package/dist/utils/common/id.d.ts.map +1 -0
  202. package/dist/utils/common/index.d.ts +3 -1
  203. package/dist/utils/common/index.d.ts.map +1 -1
  204. package/dist/utils/common/object.d.ts +70 -0
  205. package/dist/utils/common/object.d.ts.map +1 -0
  206. package/dist/utils/common/validation.d.ts +20 -0
  207. package/dist/utils/common/validation.d.ts.map +1 -0
  208. package/dist/utils/featureFlags/conditions.d.ts.map +1 -1
  209. package/dist/utils/featureFlags/context.d.ts +0 -1
  210. package/dist/utils/featureFlags/context.d.ts.map +1 -1
  211. package/dist/utils/index.d.ts +1 -0
  212. package/dist/utils/index.d.ts.map +1 -1
  213. package/dist/utils/mapperUtils.d.ts +38 -0
  214. package/dist/utils/mapperUtils.d.ts.map +1 -0
  215. package/dist/utils/runtime.d.ts +15 -0
  216. package/dist/utils/runtime.d.ts.map +1 -0
  217. package/dist/version.d.ts +24 -0
  218. package/dist/version.d.ts.map +1 -0
  219. package/dist/web_app/auth/add_user.d.ts +3 -0
  220. package/dist/web_app/auth/add_user.d.ts.map +1 -0
  221. package/dist/web_app/auth/update_user.d.ts +2 -0
  222. package/dist/web_app/auth/update_user.d.ts.map +1 -0
  223. package/package.json +102 -15
  224. package/dist/backend/featureFlags/feature-flag.repository.d.ts +0 -85
  225. package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +0 -1
  226. package/dist/backend/featureFlags/feature-flag.service.d.ts +0 -123
  227. package/dist/backend/featureFlags/feature-flag.service.d.ts.map +0 -1
  228. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +0 -103
  229. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +0 -1
  230. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +0 -35
  231. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +0 -1
  232. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +0 -55
  233. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +0 -1
  234. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +0 -57
  235. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +0 -1
  236. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +0 -99
  237. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +0 -1
  238. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +0 -31
  239. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +0 -1
  240. package/dist/frontend/featureFlags/providers/types.d.ts +0 -21
  241. package/dist/frontend/featureFlags/providers/types.d.ts.map +0 -1
  242. package/dist/index.cjs +0 -4383
  243. package/dist/index.cjs.map +0 -1
@@ -0,0 +1,528 @@
1
+ /**
2
+ * Base Backend Domain Service
3
+ *
4
+ * Extends BaseDomainService with common backend patterns:
5
+ * - Automatic validation → mapper → repository → mapper flow
6
+ * - Event emission throughout CRUD lifecycle
7
+ * - Repository-based data access
8
+ * - Configurable error throwing behavior
9
+ * - Template methods with lifecycle hooks
10
+ *
11
+ * Backend domain services should extend this class to get automatic
12
+ * CRUD operation handling with standardized validation, mapping, and events.
13
+ *
14
+ * Note: This class ONLY handles repository operations. If you need HTTP API
15
+ * calls, import and use fetchers from `@plyaz/api` directly in your service.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { BaseBackendDomainService } from '@plyaz/core/domain/base';
20
+ * import type { BaseRepository } from '@plyaz/db';
21
+ *
22
+ * class MyBackendService extends BaseBackendDomainService<
23
+ * MyBackendServiceConfig,
24
+ * MyEntity,
25
+ * MyResponseDTO,
26
+ * CreateMyDTO,
27
+ * UpdateMyDTO,
28
+ * PatchMyDTO,
29
+ * QueryMyDTO,
30
+ * DeleteMyOptions,
31
+ * MyRepository,
32
+ * MyDatabaseRow,
33
+ * MyMapper,
34
+ * MyValidator
35
+ * > {
36
+ * protected repository: MyRepository;
37
+ * protected eventPrefix = 'my-entity';
38
+ *
39
+ * constructor(config: MyBackendServiceConfig) {
40
+ * super({
41
+ * serviceName: 'MyBackendService',
42
+ * supportedRuntimes: ['backend'],
43
+ * serviceConfig: config,
44
+ * mapperClass: MyMapperClass,
45
+ * validatorClass: MyValidatorClass,
46
+ * });
47
+ * this.repository = MyRepository.create();
48
+ * }
49
+ * }
50
+ * ```
51
+ */
52
+ import { BaseDomainService } from './BaseDomainService';
53
+ import { type CacheManager } from '@/base/cache';
54
+ import type { CoreBaseBackendServiceConfig, CoreBaseMapperInstance, CoreBaseValidatorInstance, CoreServiceCreateOptions, CoreBaseServiceConfig, CrudOperationOptions } from '@plyaz/types/core';
55
+ import type { DatabaseResult, PaginatedResult, QueryOptions, OperationConfig, TransactionFn, TransactionOptions } from '@plyaz/types/db';
56
+ import type { CoreValidationStartedPayload, CoreValidationSuccessPayload, CoreValidationFailedPayload, CoreSanitizationStartedPayload, CoreSanitizationSuccessPayload, CoreEntityCreatingPayload, CoreEntityCreatedPayload, CoreEntityPatchingPayload, CoreEntityPatchedPayload, CoreEntityDeletingPayload, CoreEntityDeletedPayload, CoreEntityErrorPayload, CoreEntityCompletePayload } from '@plyaz/types/core';
57
+ export type { CoreBaseBackendServiceConfig } from '@plyaz/types/core';
58
+ /**
59
+ * Union type of all event payloads used in BaseBackendDomainService
60
+ */
61
+ type BaseBackendEventPayload = CoreValidationStartedPayload | CoreValidationSuccessPayload | CoreValidationFailedPayload | CoreSanitizationStartedPayload | CoreSanitizationSuccessPayload | CoreEntityCreatingPayload<unknown> | CoreEntityCreatedPayload<unknown> | CoreEntityPatchingPayload<unknown> | CoreEntityPatchedPayload<unknown> | CoreEntityDeletingPayload | CoreEntityDeletedPayload | CoreEntityErrorPayload | CoreEntityCompletePayload;
62
+ /**
63
+ * Abstract base class for backend domain services with automatic CRUD handling.
64
+ *
65
+ * Provides:
66
+ * - Template methods for create/patch/delete/getById
67
+ * - Automatic validation → mapper → repository → mapper flow
68
+ * - Event emission throughout lifecycle
69
+ * - Repository-based data access only
70
+ * - Configurable error throwing
71
+ * - Lifecycle hooks for customization
72
+ *
73
+ * @typeParam TConfig - Service configuration type
74
+ * @typeParam TEntity - Domain entity type
75
+ * @typeParam TResponseDTO - API response DTO type
76
+ * @typeParam TCreateDTO - Create DTO type (POST)
77
+ * @typeParam TUpdateDTO - Update DTO type (PUT)
78
+ * @typeParam TPatchDTO - Patch DTO type (PATCH)
79
+ * @typeParam TQueryDTO - Query DTO type for listing/filtering (defaults to Record<string, unknown>)
80
+ * @typeParam TDeleteOptions - Delete options type
81
+ * @typeParam TRepository - Repository type (must have create/update/delete/findById/findMany methods)
82
+ * @typeParam TDatabaseRow - Database row type
83
+ * @typeParam TStoreState - Store state type (serializable)
84
+ * @typeParam TMapper - Mapper type
85
+ * @typeParam TValidator - Validator type
86
+ */
87
+ export declare abstract class BaseBackendDomainService<TConfig extends CoreBaseBackendServiceConfig, TEntity, TResponseDTO, TCreateDTO extends Record<string, unknown>, TUpdateDTO extends Record<string, unknown> = TCreateDTO, TPatchDTO extends Partial<Record<string, unknown>> = Partial<TCreateDTO>, TQueryDTO extends Record<string, unknown> = Record<string, unknown>, TDeleteOptions = {
88
+ soft: boolean;
89
+ }, TDatabaseRow extends Record<string, unknown> = TCreateDTO & {
90
+ id: string;
91
+ }, TRepository extends {
92
+ create(data: TCreateDTO): Promise<DatabaseResult<TDatabaseRow>>;
93
+ update(id: string, data: TPatchDTO): Promise<DatabaseResult<TDatabaseRow>>;
94
+ softDelete(id: string): Promise<DatabaseResult<void>>;
95
+ delete(id: string): Promise<DatabaseResult<void>>;
96
+ findById(id: string): Promise<DatabaseResult<TDatabaseRow | null>>;
97
+ findMany(options?: QueryOptions<TDatabaseRow>, config?: OperationConfig): Promise<DatabaseResult<PaginatedResult<TDatabaseRow>>>;
98
+ /** Get table name for transaction operations */
99
+ getTableName(): string;
100
+ } = never, TStoreState = TEntity, TMapper extends CoreBaseMapperInstance<TEntity, TResponseDTO, TCreateDTO, TUpdateDTO, TPatchDTO, unknown, TStoreState> = CoreBaseMapperInstance<TEntity, TResponseDTO, TCreateDTO, TUpdateDTO, TPatchDTO, unknown, TStoreState>, TValidator extends CoreBaseValidatorInstance<TCreateDTO, TUpdateDTO, TPatchDTO, TDeleteOptions> = CoreBaseValidatorInstance<TCreateDTO, TUpdateDTO, TPatchDTO, TDeleteOptions>> extends BaseDomainService<TConfig, TMapper, TValidator> {
101
+ /**
102
+ * Repository instance for database operations.
103
+ * Subclasses must initialize this in constructor.
104
+ */
105
+ protected abstract repository: TRepository;
106
+ /**
107
+ * Event prefix for event emission (e.g., 'example', 'user', 'product').
108
+ * Used to construct event names like '{prefix}:creating', '{prefix}:created'.
109
+ */
110
+ protected abstract eventPrefix: string;
111
+ /**
112
+ * Whether to use cache by default for all CRUD operations.
113
+ * Set from config.cache.enabled or defaults to true.
114
+ * Individual operations can override this via options.cache.useCache.
115
+ * Only applies if cacheManager is available.
116
+ */
117
+ protected useCacheByDefault: boolean;
118
+ /**
119
+ * Default TTL for cache entries (in seconds).
120
+ * Set from config.cache.defaultTtl or defaults to 300 (5 minutes).
121
+ */
122
+ protected defaultCacheTtl: number;
123
+ /**
124
+ * Check if should throw on validation errors (default: true)
125
+ */
126
+ protected get throwOnValidationError(): boolean;
127
+ /**
128
+ * Check if should throw on repository errors (default: true)
129
+ */
130
+ protected get throwOnRepositoryError(): boolean;
131
+ /**
132
+ * Check if should emit events (default: true)
133
+ */
134
+ protected get emitEvents(): boolean;
135
+ constructor(baseConfig: CoreBaseServiceConfig<TConfig, TMapper, TValidator>);
136
+ /**
137
+ * Create a new entity (POST)
138
+ *
139
+ * Flow:
140
+ * 1. Assert service is ready
141
+ * 2. Emit validation:started event
142
+ * 3. Validate data using validator
143
+ * 4. Emit validation:success event
144
+ * 5. Emit sanitization:started event (Zod transforms already applied)
145
+ * 6. Map to create DTO using mapper
146
+ * 7. Emit creating event
147
+ * 8. Call repository.create()
148
+ * 9. Map response to domain entity
149
+ * 10. Cache the new entity (if enabled)
150
+ * 11. Emit created event
151
+ *
152
+ * @param data - Raw data to validate and create
153
+ * @param options - Operation options (cache, etc.)
154
+ * @returns Created entity
155
+ * @throws ValidationError[] if validation fails (array of errors)
156
+ * @throws CorePackageError if repository call fails
157
+ */
158
+ create<TInput = unknown>(data: TInput, options?: CrudOperationOptions): Promise<TEntity>;
159
+ /**
160
+ * Patch an entity (PATCH - partial update)
161
+ *
162
+ * Flow similar to create but for partial updates
163
+ *
164
+ * @param id - Entity ID
165
+ * @param data - Raw data to validate and patch
166
+ * @param options - Operation options (cache, etc.)
167
+ * @returns Updated entity
168
+ * @throws ValidationError[] if validation fails
169
+ * @throws CorePackageError if repository call fails
170
+ */
171
+ patch<TInput = unknown>(id: string, data: TInput, options?: CrudOperationOptions): Promise<TEntity>;
172
+ /**
173
+ * Delete an entity (DELETE)
174
+ *
175
+ * @param id - Entity ID
176
+ * @param deleteOptions - Delete options (e.g., soft delete)
177
+ * @param crudOptions - CRUD operation options (cache, etc.)
178
+ * @returns void
179
+ * @throws ValidationError[] if options validation fails
180
+ * @throws CorePackageError if repository call fails
181
+ */
182
+ delete<TInput = TDeleteOptions>(id: string, deleteOptions?: TInput, crudOptions?: CrudOperationOptions): Promise<void>;
183
+ /**
184
+ * Get entity by ID (GET) with cache-aside pattern
185
+ *
186
+ * Cache-aside flow:
187
+ * 1. Check cache first (if enabled)
188
+ * 2. If cache hit, return cached entity
189
+ * 3. If cache miss, fetch from DB
190
+ * 4. Cache the result (if enabled)
191
+ *
192
+ * @param id - Entity ID
193
+ * @param options - Operation options (cache, pagination, etc.)
194
+ * @returns Entity or null if not found
195
+ * @throws CorePackageError if repository call fails
196
+ *
197
+ * @example
198
+ * ```typescript
199
+ * // With cache
200
+ * const entity = await service.getById('123', {
201
+ * cache: { useCache: true, cacheTtl: 300 }
202
+ * });
203
+ *
204
+ * // Without cache
205
+ * const entity = await service.getById('123', {
206
+ * cache: { useCache: false }
207
+ * });
208
+ *
209
+ * // With custom cache key (still prefixed with cachePrefix)
210
+ * const entity = await service.getById('123', {
211
+ * cache: { customKey: 'user:active:123' }
212
+ * });
213
+ * // Final cache key will be: 'example:user:active:123'
214
+ * ```
215
+ */
216
+ getById(id: string, options?: CrudOperationOptions): Promise<TEntity | null>;
217
+ /**
218
+ * Get all entities (list/query)
219
+ *
220
+ * Flow:
221
+ * 1. Check cache (if enabled)
222
+ * 2. If cache miss, fetch from repository
223
+ * 3. Map response to domain entities
224
+ * 4. Cache the result
225
+ * 5. Return entities
226
+ *
227
+ * @param query - Query parameters for filtering/pagination
228
+ * @param options - Operation options (cache, etc.)
229
+ * @returns Array of entities
230
+ *
231
+ * @example
232
+ * ```typescript
233
+ * // Basic list
234
+ * const users = await service.getAll();
235
+ *
236
+ * // With filters
237
+ * const users = await service.getAll({ status: 'active', page: 1, limit: 10 });
238
+ *
239
+ * // With cache options
240
+ * const users = await service.getAll(
241
+ * { status: 'active' },
242
+ * { cache: { useCache: true, cacheTtl: 600 } }
243
+ * );
244
+ *
245
+ * // With custom cache key
246
+ * const users = await service.getAll(
247
+ * { status: 'active' },
248
+ * { cache: { customKey: CacheKeyBuilder.query('active', { status: 'active' }) } }
249
+ * );
250
+ * ```
251
+ */
252
+ getAll(query?: Partial<TQueryDTO>, options?: CrudOperationOptions): Promise<TEntity[]>;
253
+ /**
254
+ * Check if an entity exists by ID
255
+ *
256
+ * More efficient than getById when you only need to check existence.
257
+ * Uses cache if available, falls back to repository.findById.
258
+ *
259
+ * @param id - Entity ID to check
260
+ * @param options - Optional CRUD operation options
261
+ * @returns Promise resolving to boolean (true if exists, false otherwise)
262
+ *
263
+ * @example
264
+ * ```typescript
265
+ * const exists = await service.exists('123');
266
+ * if (exists) {
267
+ * // Entity exists
268
+ * }
269
+ * ```
270
+ */
271
+ exists(id: string, options?: CrudOperationOptions): Promise<boolean>;
272
+ /**
273
+ * Create multiple entities at once (bulk operation)
274
+ *
275
+ * **Transaction Support (Default: ON)**
276
+ * - Uses database transaction by default for atomic operations
277
+ * - All entities created successfully or none (rollback on failure)
278
+ * - Falls back to sequential creation if transactions not supported
279
+ * - Disable with `options.transaction.useTransaction: false`
280
+ *
281
+ * @param dataArray - Array of data to create entities from
282
+ * @param options - Optional CRUD operation options (includes transaction config)
283
+ * @returns Promise resolving to array of created entities
284
+ *
285
+ * @example
286
+ * ```typescript
287
+ * // Default: Uses transaction (atomic)
288
+ * const entities = await service.bulkCreate([
289
+ * { name: 'Entity 1', amount: 100 },
290
+ * { name: 'Entity 2', amount: 200 },
291
+ * ]);
292
+ *
293
+ * // Explicit: Disable transaction (sequential, partial failures possible)
294
+ * const entities = await service.bulkCreate(data, {
295
+ * transaction: { useTransaction: false }
296
+ * });
297
+ * ```
298
+ */
299
+ bulkCreate<TInput = unknown>(dataArray: TInput[], options?: CrudOperationOptions): Promise<TEntity[]>;
300
+ /**
301
+ * Delete multiple entities at once (bulk operation)
302
+ *
303
+ * **Transaction Support (Default: ON)**
304
+ * - Uses database transaction by default for atomic operations
305
+ * - All entities deleted successfully or none (rollback on failure)
306
+ * - Falls back to sequential deletion if transactions not supported
307
+ * - Disable with `crudOptions.transaction.useTransaction: false`
308
+ *
309
+ * @param ids - Array of entity IDs to delete
310
+ * @param deleteOptions - Optional delete options (soft/hard delete)
311
+ * @param crudOptions - Optional CRUD operation options (includes transaction config)
312
+ * @returns Promise resolving when all deletions complete
313
+ *
314
+ * @example
315
+ * ```typescript
316
+ * // Default: Uses transaction (atomic)
317
+ * await service.bulkDelete(['id1', 'id2', 'id3'], { soft: true });
318
+ *
319
+ * // Explicit: Disable transaction
320
+ * await service.bulkDelete(ids, { soft: true }, {
321
+ * transaction: { useTransaction: false }
322
+ * });
323
+ * ```
324
+ */
325
+ bulkDelete<TInput = TDeleteOptions>(ids: string[], deleteOptions?: TInput, crudOptions?: CrudOperationOptions): Promise<void>;
326
+ /**
327
+ * Execute operations within a database transaction
328
+ *
329
+ * Provides atomic operations with automatic rollback on failure.
330
+ * Uses the underlying database adapter's transaction support.
331
+ *
332
+ * @param fn - Function containing operations to execute within transaction
333
+ * @param options - Optional transaction configuration
334
+ * @returns Promise resolving to the transaction result
335
+ * @throws Error if transaction fails (auto-rollback occurs)
336
+ *
337
+ * @example
338
+ * ```typescript
339
+ * // Single service transaction
340
+ * const result = await userService.withTransaction(async (trx) => {
341
+ * const user = await trx.create('users', userData);
342
+ * const profile = await trx.create('profiles', { userId: user.id, ...profileData });
343
+ * return { user, profile };
344
+ * });
345
+ *
346
+ * // Cross-service transaction (using shared db instance)
347
+ * const db = Core.db.getDatabase();
348
+ * const result = await db.transaction(async (trx) => {
349
+ * await trx.create('users', userData);
350
+ * await trx.create('audit_logs', { action: 'user_created', ... });
351
+ * });
352
+ * ```
353
+ */
354
+ withTransaction<T>(fn: TransactionFn<T>, options?: TransactionOptions): Promise<DatabaseResult<T>>;
355
+ /**
356
+ * Check if transaction support is available
357
+ *
358
+ * @returns true if the database adapter supports transactions
359
+ */
360
+ get supportsTransactions(): boolean;
361
+ /**
362
+ * Called before create operation
363
+ * Override to add custom logic before creating
364
+ */
365
+ protected beforeCreate(_data: TCreateDTO): Promise<void>;
366
+ /**
367
+ * Called after create operation
368
+ * Override to add custom logic after creating
369
+ */
370
+ protected afterCreate(_entity: TEntity): Promise<void>;
371
+ /**
372
+ * Called before bulk create operation
373
+ * Override to add custom logic before bulk creating
374
+ */
375
+ protected beforeBulkCreate<TInput = unknown>(_dataArray: TInput[]): Promise<void>;
376
+ /**
377
+ * Called after bulk create operation
378
+ * Override to add custom logic after bulk creating
379
+ */
380
+ protected afterBulkCreate<TInput = unknown>(_entities: TEntity[], _dataArray: TInput[]): Promise<void>;
381
+ /**
382
+ * Called before getAll operation
383
+ * Override to add custom logic before fetching list
384
+ */
385
+ protected beforeGetAll(_query?: Partial<TQueryDTO>): Promise<void>;
386
+ /**
387
+ * Called after getAll operation
388
+ * Override to add custom logic after fetching list (e.g., invalidate related caches)
389
+ */
390
+ protected afterGetAll(_entities: TEntity[], _query?: Partial<TQueryDTO>): Promise<void>;
391
+ /**
392
+ * Called before patch operation
393
+ * Override to add custom logic before patching
394
+ */
395
+ protected beforePatch(_id: string, _data: TPatchDTO): Promise<void>;
396
+ /**
397
+ * Called after patch operation
398
+ * Override to add custom logic after patching
399
+ */
400
+ protected afterPatch(_id: string, _entity: TEntity): Promise<void>;
401
+ /**
402
+ * Called before delete operation
403
+ * Override to add custom logic before deleting
404
+ */
405
+ protected beforeDelete(_id: string, _options: TDeleteOptions): Promise<void>;
406
+ /**
407
+ * Called after delete operation
408
+ * Override to add custom logic after deleting
409
+ */
410
+ protected afterDelete(_id: string, _options: TDeleteOptions): Promise<void>;
411
+ /**
412
+ * Called before bulk delete operation
413
+ * Override to add custom logic before bulk deleting
414
+ */
415
+ protected beforeBulkDelete<TInput = TDeleteOptions>(_ids: string[], _deleteOptions?: TInput): Promise<void>;
416
+ /**
417
+ * Called after bulk delete operation
418
+ * Override to add custom logic after bulk deleting
419
+ */
420
+ protected afterBulkDelete<TInput = TDeleteOptions>(_ids: string[], _deleteOptions?: TInput): Promise<void>;
421
+ /**
422
+ * Called before exists check
423
+ * Override to add custom logic before checking existence
424
+ */
425
+ protected beforeExists(_id: string): Promise<void>;
426
+ /**
427
+ * Called after exists check
428
+ * Override to add custom logic after checking existence
429
+ */
430
+ protected afterExists(_id: string, _exists: boolean): Promise<void>;
431
+ /**
432
+ * Get default delete options
433
+ * Override to customize default behavior
434
+ */
435
+ protected getDefaultDeleteOptions(): TDeleteOptions;
436
+ /**
437
+ * Emit event with prefix
438
+ * Only emits if emitEvents is true
439
+ */
440
+ protected emitEvent<TPayload extends BaseBackendEventPayload>(event: string, payload: TPayload): void;
441
+ /**
442
+ * Build cache key with service prefix.
443
+ * ALWAYS applies the cachePrefix. Override this method to customize key structure.
444
+ *
445
+ * @param key - Cache key (without prefix)
446
+ * @returns Prefixed cache key (e.g., 'example:entity:123')
447
+ *
448
+ * @example
449
+ * ```typescript
450
+ * // Default behavior
451
+ * buildCacheKey('entity:123') // Returns: 'example:entity:123'
452
+ *
453
+ * // Override for custom namespacing
454
+ * protected buildCacheKey(key: string): string {
455
+ * const baseKey = super.buildCacheKey(key);
456
+ * return `${baseKey}:tenant:${this.tenantId}`;
457
+ * }
458
+ * ```
459
+ */
460
+ protected buildCacheKey(key: string): string;
461
+ /**
462
+ * Get value from cache with automatic prefix.
463
+ * Prefix is ALWAYS applied via buildCacheKey().
464
+ *
465
+ * @param key - Cache key (will be prefixed automatically)
466
+ * @returns Cached value or null
467
+ */
468
+ protected cacheGet<T = unknown>(key: string): Promise<T | null>;
469
+ /**
470
+ * Set value in cache with automatic prefix.
471
+ * Prefix is ALWAYS applied via buildCacheKey().
472
+ *
473
+ * @param key - Cache key (will be prefixed automatically)
474
+ * @param value - Value to cache
475
+ * @param ttl - TTL in seconds (optional)
476
+ */
477
+ protected cacheSet<T = unknown>(key: string, value: T, ttl?: number): Promise<void>;
478
+ /**
479
+ * Delete value from cache with automatic prefix.
480
+ * Prefix is ALWAYS applied via buildCacheKey().
481
+ *
482
+ * @param key - Cache key (will be prefixed automatically)
483
+ */
484
+ protected cacheDelete(key: string): Promise<void>;
485
+ /**
486
+ * Clear all cache for this service (by prefix pattern)
487
+ */
488
+ protected cacheClear(): Promise<void>;
489
+ /**
490
+ * Check if cache is available
491
+ */
492
+ protected get hasCacheManager(): boolean;
493
+ /**
494
+ * Get cache manager instance from create options.
495
+ * The cache instance is injected by ServiceRegistry, not created here.
496
+ *
497
+ * @param options - Service create options from ServiceRegistry
498
+ * @returns CacheManager instance or undefined if not available
499
+ */
500
+ static getCacheManager(options?: CoreServiceCreateOptions): CacheManager | undefined;
501
+ /**
502
+ * Track a CRUD operation with observability (span + metrics).
503
+ * Wraps an operation with automatic span creation, duration recording, and error tracking.
504
+ *
505
+ * @param operation - Operation name (create, patch, delete, getById, getAll)
506
+ * @param entityId - Optional entity ID for context
507
+ * @param fn - The operation function to execute
508
+ * @returns Result of the operation
509
+ *
510
+ * @example
511
+ * ```typescript
512
+ * const entity = await this.trackOperation('create', undefined, async () => {
513
+ * return await this.repository.create(data);
514
+ * });
515
+ * ```
516
+ */
517
+ protected trackOperation<T>(operation: 'create' | 'patch' | 'delete' | 'getById' | 'getAll' | 'bulkCreate' | 'bulkDelete' | 'transaction', entityId: string | undefined, fn: () => Promise<T>): Promise<T>;
518
+ /**
519
+ * Record operation metrics (duration and count).
520
+ * Called automatically by CRUD methods when observability is enabled.
521
+ */
522
+ protected recordOperationMetrics(operation: string, duration: number, success: boolean): Promise<void>;
523
+ /**
524
+ * Record cache hit/miss metric.
525
+ */
526
+ protected recordCacheMetric(hit: boolean, operation: string): Promise<void>;
527
+ }
528
+ //# sourceMappingURL=BaseBackendDomainService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseBackendDomainService.d.ts","sourceRoot":"","sources":["../../../src/domain/base/BaseBackendDomainService.ts"],"names":[],"mappings":"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"}