@plyaz/core 1.2.0 → 1.3.0

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 (240) hide show
  1. package/README.md +248 -183
  2. package/dist/adapters/index.d.ts +16 -0
  3. package/dist/adapters/index.d.ts.map +1 -0
  4. package/dist/adapters/nestjs.d.ts +79 -0
  5. package/dist/adapters/nestjs.d.ts.map +1 -0
  6. package/dist/adapters/nextjs.d.ts +28 -0
  7. package/dist/adapters/nextjs.d.ts.map +1 -0
  8. package/dist/backend/example/example.controller.d.ts +121 -0
  9. package/dist/backend/example/example.controller.d.ts.map +1 -0
  10. package/dist/backend/example/example.module.d.ts +29 -0
  11. package/dist/backend/example/example.module.d.ts.map +1 -0
  12. package/dist/backend/example/index.d.ts +8 -0
  13. package/dist/backend/example/index.d.ts.map +1 -0
  14. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts +150 -0
  15. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts.map +1 -0
  16. package/dist/backend/featureFlags/config/feature-flag.config.d.ts +28 -50
  17. package/dist/backend/featureFlags/config/feature-flag.config.d.ts.map +1 -1
  18. package/dist/backend/featureFlags/config/validation.d.ts +6 -6
  19. package/dist/backend/featureFlags/config/validation.d.ts.map +1 -1
  20. package/dist/backend/featureFlags/feature-flag.controller.d.ts +14 -55
  21. package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -1
  22. package/dist/backend/featureFlags/feature-flag.module.d.ts +36 -43
  23. package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -1
  24. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts +16 -2
  25. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts.map +1 -1
  26. package/dist/backend/featureFlags/index.d.ts +6 -7
  27. package/dist/backend/featureFlags/index.d.ts.map +1 -1
  28. package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts.map +1 -1
  29. package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts.map +1 -1
  30. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts +6 -11
  31. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts.map +1 -1
  32. package/dist/backend/index.d.ts +5 -0
  33. package/dist/backend/index.d.ts.map +1 -1
  34. package/dist/base/cache/CacheKeyBuilder.d.ts +115 -0
  35. package/dist/base/cache/CacheKeyBuilder.d.ts.map +1 -0
  36. package/dist/base/cache/index.d.ts +1 -0
  37. package/dist/base/cache/index.d.ts.map +1 -1
  38. package/dist/base/cache/strategies/redis.d.ts.map +1 -1
  39. package/dist/base/observability/BaseAdapter.d.ts +79 -0
  40. package/dist/base/observability/BaseAdapter.d.ts.map +1 -0
  41. package/dist/base/observability/CompositeAdapter.d.ts +72 -0
  42. package/dist/base/observability/CompositeAdapter.d.ts.map +1 -0
  43. package/dist/base/observability/DatadogAdapter.d.ts +117 -0
  44. package/dist/base/observability/DatadogAdapter.d.ts.map +1 -0
  45. package/dist/base/observability/LoggerAdapter.d.ts +54 -0
  46. package/dist/base/observability/LoggerAdapter.d.ts.map +1 -0
  47. package/dist/base/observability/ObservabilityService.d.ts +160 -0
  48. package/dist/base/observability/ObservabilityService.d.ts.map +1 -0
  49. package/dist/base/observability/index.d.ts +17 -0
  50. package/dist/base/observability/index.d.ts.map +1 -0
  51. package/dist/domain/base/BaseBackendDomainService.d.ts +528 -0
  52. package/dist/domain/base/BaseBackendDomainService.d.ts.map +1 -0
  53. package/dist/domain/base/BaseDomainService.d.ts +284 -0
  54. package/dist/domain/base/BaseDomainService.d.ts.map +1 -0
  55. package/dist/domain/base/BaseFrontendDomainService.d.ts +493 -0
  56. package/dist/domain/base/BaseFrontendDomainService.d.ts.map +1 -0
  57. package/dist/domain/base/BaseMapper.d.ts +100 -0
  58. package/dist/domain/base/BaseMapper.d.ts.map +1 -0
  59. package/dist/domain/base/BaseValidator.d.ts +105 -0
  60. package/dist/domain/base/BaseValidator.d.ts.map +1 -0
  61. package/dist/domain/base/index.d.ts +10 -0
  62. package/dist/domain/base/index.d.ts.map +1 -0
  63. package/dist/domain/example/BackendExampleDomainService.d.ts +257 -0
  64. package/dist/domain/example/BackendExampleDomainService.d.ts.map +1 -0
  65. package/dist/domain/example/FrontendExampleDomainService.d.ts +164 -0
  66. package/dist/domain/example/FrontendExampleDomainService.d.ts.map +1 -0
  67. package/dist/domain/example/index.d.ts +10 -0
  68. package/dist/domain/example/index.d.ts.map +1 -0
  69. package/dist/domain/example/mappers/ExampleMapper.d.ts +67 -0
  70. package/dist/domain/example/mappers/ExampleMapper.d.ts.map +1 -0
  71. package/dist/domain/example/validators/ExampleValidator.d.ts +33 -0
  72. package/dist/domain/example/validators/ExampleValidator.d.ts.map +1 -0
  73. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts +86 -0
  74. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts.map +1 -0
  75. package/dist/domain/featureFlags/index.d.ts +10 -5
  76. package/dist/domain/featureFlags/index.d.ts.map +1 -1
  77. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts +72 -0
  78. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts.map +1 -0
  79. package/dist/domain/featureFlags/mappers/index.d.ts +8 -0
  80. package/dist/domain/featureFlags/mappers/index.d.ts.map +1 -0
  81. package/dist/domain/featureFlags/module.d.ts +20 -0
  82. package/dist/domain/featureFlags/module.d.ts.map +1 -0
  83. package/dist/domain/featureFlags/provider.d.ts +40 -1
  84. package/dist/domain/featureFlags/provider.d.ts.map +1 -1
  85. package/dist/domain/featureFlags/providers/api.d.ts +59 -34
  86. package/dist/domain/featureFlags/providers/api.d.ts.map +1 -1
  87. package/dist/domain/featureFlags/providers/database.d.ts +54 -47
  88. package/dist/domain/featureFlags/providers/database.d.ts.map +1 -1
  89. package/dist/domain/featureFlags/providers/factory.d.ts +50 -33
  90. package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -1
  91. package/dist/domain/featureFlags/providers/file.d.ts +48 -1
  92. package/dist/domain/featureFlags/providers/file.d.ts.map +1 -1
  93. package/dist/domain/featureFlags/providers/memory.d.ts +32 -6
  94. package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -1
  95. package/dist/domain/featureFlags/providers/redis.d.ts +6 -1
  96. package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -1
  97. package/dist/domain/featureFlags/service.d.ts +112 -0
  98. package/dist/domain/featureFlags/service.d.ts.map +1 -0
  99. package/dist/domain/index.d.ts +2 -0
  100. package/dist/domain/index.d.ts.map +1 -1
  101. package/dist/engine/featureFlags/engine.d.ts +8 -0
  102. package/dist/engine/featureFlags/engine.d.ts.map +1 -1
  103. package/dist/entry-backend.d.ts +26 -0
  104. package/dist/entry-backend.d.ts.map +1 -0
  105. package/dist/entry-backend.js +15455 -0
  106. package/dist/entry-backend.js.map +1 -0
  107. package/dist/entry-backend.mjs +15339 -0
  108. package/dist/entry-backend.mjs.map +1 -0
  109. package/dist/entry-frontend.d.ts +23 -0
  110. package/dist/entry-frontend.d.ts.map +1 -0
  111. package/dist/entry-frontend.js +11340 -0
  112. package/dist/entry-frontend.js.map +1 -0
  113. package/dist/entry-frontend.mjs +11278 -0
  114. package/dist/entry-frontend.mjs.map +1 -0
  115. package/dist/events/CoreEventManager.d.ts +116 -0
  116. package/dist/events/CoreEventManager.d.ts.map +1 -0
  117. package/dist/events/index.d.ts +27 -0
  118. package/dist/events/index.d.ts.map +1 -0
  119. package/dist/frontend/base/index.d.ts +8 -0
  120. package/dist/frontend/base/index.d.ts.map +1 -0
  121. package/dist/frontend/components/InitializationError.d.ts +25 -0
  122. package/dist/frontend/components/InitializationError.d.ts.map +1 -0
  123. package/dist/frontend/components/InitializationLoading.d.ts +22 -0
  124. package/dist/frontend/components/InitializationLoading.d.ts.map +1 -0
  125. package/dist/frontend/components/index.d.ts +9 -0
  126. package/dist/frontend/components/index.d.ts.map +1 -0
  127. package/dist/frontend/example/index.d.ts +9 -0
  128. package/dist/frontend/example/index.d.ts.map +1 -0
  129. package/dist/frontend/featureFlags/index.d.ts +28 -7
  130. package/dist/frontend/featureFlags/index.d.ts.map +1 -1
  131. package/dist/frontend/index.d.ts +4 -0
  132. package/dist/frontend/index.d.ts.map +1 -1
  133. package/dist/frontend/providers/ApiProvider.d.ts +2 -2
  134. package/dist/frontend/providers/ApiProvider.d.ts.map +1 -1
  135. package/dist/frontend/providers/PlyazProvider.d.ts +305 -0
  136. package/dist/frontend/providers/PlyazProvider.d.ts.map +1 -0
  137. package/dist/frontend/providers/index.d.ts +1 -0
  138. package/dist/frontend/providers/index.d.ts.map +1 -1
  139. package/dist/frontend/store/feature-flags.d.ts +63 -0
  140. package/dist/frontend/store/feature-flags.d.ts.map +1 -0
  141. package/dist/frontend/store/index.d.ts +14 -0
  142. package/dist/frontend/store/index.d.ts.map +1 -0
  143. package/dist/frontend/store/integrations.d.ts +36 -0
  144. package/dist/frontend/store/integrations.d.ts.map +1 -0
  145. package/dist/frontend/store/service-accessors.d.ts +78 -0
  146. package/dist/frontend/store/service-accessors.d.ts.map +1 -0
  147. package/dist/index.d.ts +5 -2
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +15262 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/index.mjs +13667 -4861
  152. package/dist/index.mjs.map +1 -1
  153. package/dist/init/CoreInitializer.d.ts +583 -0
  154. package/dist/init/CoreInitializer.d.ts.map +1 -0
  155. package/dist/init/ServiceRegistry.d.ts +256 -0
  156. package/dist/init/ServiceRegistry.d.ts.map +1 -0
  157. package/dist/init/index.d.ts +14 -0
  158. package/dist/init/index.d.ts.map +1 -0
  159. package/dist/init/nestjs/CoreModule.d.ts +63 -0
  160. package/dist/init/nestjs/CoreModule.d.ts.map +1 -0
  161. package/dist/init/nestjs/index.d.ts +5 -0
  162. package/dist/init/nestjs/index.d.ts.map +1 -0
  163. package/dist/init/nestjs/index.js +9234 -0
  164. package/dist/init/nestjs/index.js.map +1 -0
  165. package/dist/init/nestjs/index.mjs +9230 -0
  166. package/dist/init/nestjs/index.mjs.map +1 -0
  167. package/dist/init/react.d.ts +33 -0
  168. package/dist/init/react.d.ts.map +1 -0
  169. package/dist/models/example/ExampleRepository.d.ts +166 -0
  170. package/dist/models/example/ExampleRepository.d.ts.map +1 -0
  171. package/dist/models/example/index.d.ts +7 -0
  172. package/dist/models/example/index.d.ts.map +1 -0
  173. package/dist/models/featureFlags/FeatureFlagRepository.d.ts +161 -0
  174. package/dist/models/featureFlags/FeatureFlagRepository.d.ts.map +1 -0
  175. package/dist/models/featureFlags/index.d.ts +7 -0
  176. package/dist/models/featureFlags/index.d.ts.map +1 -0
  177. package/dist/models/index.d.ts +9 -0
  178. package/dist/models/index.d.ts.map +1 -0
  179. package/dist/services/ApiClientService.d.ts +92 -4
  180. package/dist/services/ApiClientService.d.ts.map +1 -1
  181. package/dist/services/CacheService.d.ts +176 -0
  182. package/dist/services/CacheService.d.ts.map +1 -0
  183. package/dist/services/DbService.d.ts +393 -0
  184. package/dist/services/DbService.d.ts.map +1 -0
  185. package/dist/services/NotificationService.d.ts +153 -0
  186. package/dist/services/NotificationService.d.ts.map +1 -0
  187. package/dist/services/StorageService.d.ts +146 -0
  188. package/dist/services/StorageService.d.ts.map +1 -0
  189. package/dist/services/index.d.ts +4 -0
  190. package/dist/services/index.d.ts.map +1 -1
  191. package/dist/utils/common/id.d.ts +83 -0
  192. package/dist/utils/common/id.d.ts.map +1 -0
  193. package/dist/utils/common/index.d.ts +2 -0
  194. package/dist/utils/common/index.d.ts.map +1 -1
  195. package/dist/utils/common/object.d.ts +70 -0
  196. package/dist/utils/common/object.d.ts.map +1 -0
  197. package/dist/utils/featureFlags/conditions.d.ts.map +1 -1
  198. package/dist/utils/featureFlags/context.d.ts +0 -1
  199. package/dist/utils/featureFlags/context.d.ts.map +1 -1
  200. package/dist/utils/index.d.ts +1 -0
  201. package/dist/utils/index.d.ts.map +1 -1
  202. package/dist/utils/mapperUtils.d.ts +38 -0
  203. package/dist/utils/mapperUtils.d.ts.map +1 -0
  204. package/dist/utils/runtime.d.ts +15 -0
  205. package/dist/utils/runtime.d.ts.map +1 -0
  206. package/dist/version.d.ts +24 -0
  207. package/dist/version.d.ts.map +1 -0
  208. package/dist/web_app/auth/add_user.d.ts +2 -2
  209. package/dist/web_app/auth/add_user.d.ts.map +1 -1
  210. package/dist/web_app/auth/update_user.d.ts +1 -1
  211. package/dist/web_app/auth/update_user.d.ts.map +1 -1
  212. package/package.json +89 -15
  213. package/dist/backend/featureFlags/database/connection.d.ts +0 -321
  214. package/dist/backend/featureFlags/database/connection.d.ts.map +0 -1
  215. package/dist/backend/featureFlags/database/repository.d.ts +0 -518
  216. package/dist/backend/featureFlags/database/repository.d.ts.map +0 -1
  217. package/dist/backend/featureFlags/feature-flag.repository.d.ts +0 -85
  218. package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +0 -1
  219. package/dist/backend/featureFlags/feature-flag.service.d.ts +0 -264
  220. package/dist/backend/featureFlags/feature-flag.service.d.ts.map +0 -1
  221. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +0 -103
  222. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +0 -1
  223. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +0 -35
  224. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +0 -1
  225. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +0 -55
  226. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +0 -1
  227. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +0 -57
  228. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +0 -1
  229. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +0 -99
  230. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +0 -1
  231. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +0 -31
  232. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +0 -1
  233. package/dist/frontend/featureFlags/providers/types.d.ts +0 -21
  234. package/dist/frontend/featureFlags/providers/types.d.ts.map +0 -1
  235. package/dist/index.cjs +0 -6435
  236. package/dist/index.cjs.map +0 -1
  237. package/dist/utils/db/databaseService.d.ts +0 -6
  238. package/dist/utils/db/databaseService.d.ts.map +0 -1
  239. package/dist/utils/db/index.d.ts +0 -2
  240. package/dist/utils/db/index.d.ts.map +0 -1
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Example Controller
3
+ *
4
+ * Simple NestJS controller demonstrating Core + BackendExampleDomainService integration.
5
+ * Use as reference for building your own backend modules.
6
+ *
7
+ * Demonstrates:
8
+ * - Standard CRUD operations with error handling
9
+ * - Single error throwing (standard pattern)
10
+ * - Array error throwing (multiple validation errors)
11
+ * - Standard API response format using SuccessResponseStandard
12
+ * - How errors are automatically captured and returned as ErrorResponse
13
+ */
14
+ import { BackendExampleDomainService } from '../../domain/example';
15
+ import type { ExampleEntity, CreateExampleDTO, PatchExampleDTO } from '@plyaz/types/examples';
16
+ import type { ReturnResponseType } from '@plyaz/types/errors';
17
+ export declare const BACKEND_EXAMPLE_DOMAIN_SERVICE = "BACKEND_EXAMPLE_DOMAIN_SERVICE";
18
+ /**
19
+ * Example Controller
20
+ *
21
+ * Routes:
22
+ * - GET /example/health - Health check
23
+ * - GET /example/entities/:id - Get entity by ID
24
+ * - POST /example/entities - Create entity
25
+ * - PATCH /example/entities/:id - Update entity
26
+ * - DELETE /example/entities/:id - Delete entity
27
+ * - POST /example/entities/validated - Create with full validation (array errors example)
28
+ * - GET /example/errors/single - Demo: Single error response
29
+ * - GET /example/errors/array - Demo: Array of errors response
30
+ */
31
+ export declare class ExampleController {
32
+ private readonly exampleService;
33
+ constructor(exampleService: BackendExampleDomainService);
34
+ /**
35
+ * Health check endpoint
36
+ * GET /example/health
37
+ */
38
+ health(): ReturnResponseType<{
39
+ service: boolean;
40
+ timestamp: string;
41
+ }>;
42
+ /**
43
+ * Get entity by ID
44
+ * GET /example/entities/:id
45
+ */
46
+ getEntity(id: string): Promise<ReturnResponseType<ExampleEntity | null>>;
47
+ /**
48
+ * Create a new entity
49
+ * POST /example/entities
50
+ *
51
+ * Example success response:
52
+ * ```json
53
+ * {
54
+ * "success": true,
55
+ * "message": "Entity created successfully",
56
+ * "data": { ... },
57
+ * "codeStatus": 201
58
+ * }
59
+ * ```
60
+ */
61
+ createEntity(dto: CreateExampleDTO): Promise<ReturnResponseType<ExampleEntity>>;
62
+ /**
63
+ * Update an entity (partial)
64
+ * PATCH /example/entities/:id
65
+ */
66
+ updateEntity(id: string, dto: PatchExampleDTO): Promise<ReturnResponseType<ExampleEntity>>;
67
+ /**
68
+ * Delete an entity
69
+ * DELETE /example/entities/:id
70
+ */
71
+ deleteEntity(id: string): Promise<ReturnResponseType<null>>;
72
+ /**
73
+ * Create entity with full validation (array errors pattern)
74
+ * POST /example/entities/validated
75
+ *
76
+ * Demonstrates validator throwing validation errors.
77
+ * The validator.validateCreateOrThrow() will automatically throw all validation errors as an array.
78
+ *
79
+ * Example success response:
80
+ * ```json
81
+ * {
82
+ * "success": true,
83
+ * "message": "Entity created successfully",
84
+ * "data": { ... },
85
+ * "codeStatus": 201
86
+ * }
87
+ * ```
88
+ */
89
+ createEntityWithValidation(dto: unknown): Promise<ReturnResponseType<ExampleEntity>>;
90
+ /**
91
+ * Demo: Single validation error response
92
+ * GET /example/errors/single
93
+ *
94
+ * Demonstrates validator throwing a SINGLE validation error.
95
+ * Service uses validateCreateOrThrow() with ONE invalid field.
96
+ *
97
+ * Response: HTTP 400
98
+ * ```json
99
+ * [{ "code": "VALIDATION_FAILED", "message": "Name is required", "field": "name" }]
100
+ * ```
101
+ */
102
+ demoSingleError(): Promise<void>;
103
+ /**
104
+ * Demo: Multiple validation errors response
105
+ * GET /example/errors/array
106
+ *
107
+ * Demonstrates validator throwing MULTIPLE validation errors.
108
+ * Service uses validateCreateOrThrow() with MULTIPLE invalid fields.
109
+ *
110
+ * Response: HTTP 400
111
+ * ```json
112
+ * [
113
+ * { "code": "VALIDATION_FAILED", "message": "Name is required", "field": "name" },
114
+ * { "code": "VALIDATION_FAILED", "message": "Amount must be non-negative", "field": "amount" },
115
+ * { "code": "VALIDATION_FAILED", "message": "Description is required", "field": "description" }
116
+ * ]
117
+ * ```
118
+ */
119
+ demoArrayErrors(): Promise<void>;
120
+ }
121
+ //# sourceMappingURL=example.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.controller.d.ts","sourceRoot":"","sources":["../../../src/backend/example/example.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAcH,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI9D,eAAO,MAAM,8BAA8B,mCAAmC,CAAC;AAE/E;;;;;;;;;;;;GAYG;AACH,qBACa,iBAAiB;IAG1B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,2BAA2B;IAG9D;;;OAGG;IAEH,MAAM,IAAI,kBAAkB,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAOrE;;;OAGG;IAEG,SAAS,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAK3F;;;;;;;;;;;;;OAaG;IAGG,YAAY,CAAS,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAK7F;;;OAGG;IAEG,YAAY,CACH,EAAE,EAAE,MAAM,EACf,GAAG,EAAE,eAAe,GAC3B,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAK7C;;;OAGG;IAGG,YAAY,CAAc,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAK9E;;;;;;;;;;;;;;;;OAgBG;IAGG,0BAA0B,CACtB,GAAG,EAAE,OAAO,GACnB,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAW7C;;;;;;;;;;;OAWG;IAEG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtC;;;;;;;;;;;;;;;OAeG;IAEG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAIvC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Example Module
3
+ *
4
+ * NestJS module demonstrating the proper pattern using domain service directly:
5
+ * Module → Controller → BackendExampleService
6
+ *
7
+ * The BackendExampleService is auto-initialized by Core.initialize() and
8
+ * can be injected via ServiceRegistry or provided directly to controllers.
9
+ *
10
+ * @example Usage in app.module.ts
11
+ * ```typescript
12
+ * import { CoreModule } from '@plyaz/core/nestjs';
13
+ * import { ExampleModule } from '@plyaz/core';
14
+ *
15
+ * @Module({
16
+ * imports: [
17
+ * CoreModule.forRoot({ envPath: '.env' }),
18
+ * ExampleModule,
19
+ * ],
20
+ * })
21
+ * export class AppModule {}
22
+ * ```
23
+ */
24
+ import { BACKEND_EXAMPLE_DOMAIN_SERVICE } from './example.controller';
25
+ import { BackendExampleDomainService } from '../../domain/example';
26
+ export declare class ExampleModule {
27
+ }
28
+ export { BackendExampleDomainService, BACKEND_EXAMPLE_DOMAIN_SERVICE };
29
+ //# sourceMappingURL=example.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.module.d.ts","sourceRoot":"","sources":["../../../src/backend/example/example.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAqB,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAA+B,MAAM,sBAAsB,CAAC;AAEhG,qBAYa,aAAa;CAAG;AAG7B,OAAO,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Example Module Exports
3
+ *
4
+ * Pattern: Module → Controller → BackendExampleDomainService (from domain)
5
+ */
6
+ export { ExampleModule, BACKEND_EXAMPLE_DOMAIN_SERVICE, BackendExampleDomainService, } from './example.module';
7
+ export { ExampleController } from './example.controller';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backend/example/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,aAAa,EACb,8BAA8B,EAC9B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Feature Flag Domain Service (Backend)
3
+ *
4
+ * Backend-specific domain service that extends BaseDomainService and
5
+ * uses providers (database, redis, memory, etc.) to manage feature flags.
6
+ *
7
+ * Runtime: Backend only (uses providers, no API calls)
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * // Create service instance with a provider
12
+ * const provider = new DatabaseFeatureFlagProvider(config, FEATURES);
13
+ * await provider.initialize();
14
+ *
15
+ * const flagService = new FeatureFlagDomainService({
16
+ * enabled: true,
17
+ * provider,
18
+ * });
19
+ *
20
+ * // Use the service
21
+ * const isEnabled = await flagService.isEnabled('new-feature', { userId: 'user-123' });
22
+ * ```
23
+ */
24
+ import type { FeatureFlag, FeatureFlagRule, FeatureFlagContext, FeatureFlagValue, FeatureFlagEvaluation, CreateFlagRequest } from '@plyaz/types';
25
+ import { BaseDomainService } from '../../domain/base';
26
+ import type { FeatureFlagDomainServiceConfig as _FeatureFlagDomainServiceConfig, FeatureFlagDomainEventType } from '@plyaz/types/features';
27
+ /**
28
+ * Feature Flag Backend Service
29
+ *
30
+ * Extends BaseDomainService with generics for strong typing.
31
+ * Uses an injected provider (database, redis, memory, etc.) for data access.
32
+ *
33
+ * No mapper/validator as this service handles simple flag values.
34
+ * No API client - uses provider directly for data access.
35
+ */
36
+ export declare class FeatureFlagDomainService extends BaseDomainService<_FeatureFlagDomainServiceConfig> {
37
+ /** The feature flag provider */
38
+ private readonly provider;
39
+ constructor(config: _FeatureFlagDomainServiceConfig);
40
+ /**
41
+ * Check if service is available
42
+ */
43
+ isAvailable(): boolean;
44
+ /**
45
+ * Dispose/cleanup the service
46
+ */
47
+ dispose(): void;
48
+ /**
49
+ * Refresh the provider cache
50
+ */
51
+ refresh(): Promise<void>;
52
+ /**
53
+ * Evaluate a single feature flag
54
+ *
55
+ * @param key - Feature flag key
56
+ * @param context - Evaluation context (user, environment, etc.)
57
+ * @returns Full evaluation result
58
+ */
59
+ evaluate(key: string, context?: FeatureFlagContext): Promise<FeatureFlagEvaluation<string>>;
60
+ /**
61
+ * Check if a feature flag is enabled
62
+ *
63
+ * @param key - Feature flag key
64
+ * @param context - Evaluation context
65
+ * @returns Boolean indicating if flag is enabled
66
+ */
67
+ isEnabled(key: string, context?: FeatureFlagContext): Promise<boolean>;
68
+ /**
69
+ * Get the value of a feature flag
70
+ *
71
+ * @param key - Feature flag key
72
+ * @param context - Evaluation context
73
+ * @returns The flag value
74
+ */
75
+ getValue<T = FeatureFlagValue>(key: string, context?: FeatureFlagContext): Promise<T>;
76
+ /**
77
+ * Evaluate all feature flags for a context
78
+ *
79
+ * @param context - Evaluation context
80
+ * @returns Record of all flag evaluations
81
+ */
82
+ evaluateAll(context?: FeatureFlagContext): Promise<Record<string, FeatureFlagEvaluation<string>>>;
83
+ /**
84
+ * Create a new feature flag
85
+ *
86
+ * @param data - Flag creation data
87
+ * @returns The created feature flag
88
+ */
89
+ create(data: CreateFlagRequest<string>): Promise<FeatureFlag<string>>;
90
+ /**
91
+ * Update an existing feature flag
92
+ *
93
+ * @param key - Flag key to update
94
+ * @param data - Partial update data
95
+ * @returns The updated feature flag
96
+ */
97
+ update(key: string, data: Partial<CreateFlagRequest<string>>): Promise<FeatureFlag<string>>;
98
+ /**
99
+ * Delete a feature flag
100
+ *
101
+ * @param key - Flag key to delete
102
+ */
103
+ delete(key: string): Promise<void>;
104
+ /**
105
+ * Get rules for a specific flag
106
+ *
107
+ * @param key - Flag key
108
+ * @returns Array of rules
109
+ */
110
+ getRules(key: string): Promise<FeatureFlagRule<string>[]>;
111
+ /**
112
+ * Get all rules
113
+ *
114
+ * @returns Array of all rules
115
+ */
116
+ getAllRules(): Promise<FeatureFlagRule<string>[]>;
117
+ /**
118
+ * Set a runtime override for a flag (in-memory, not persisted)
119
+ *
120
+ * @param key - Flag key
121
+ * @param value - Override value
122
+ */
123
+ setOverride(key: string, value: FeatureFlagValue): void;
124
+ /**
125
+ * Remove a runtime override for a flag
126
+ *
127
+ * @param key - Flag key
128
+ */
129
+ removeOverride(key: string): void;
130
+ /**
131
+ * Clear all runtime overrides
132
+ */
133
+ clearOverrides(): void;
134
+ /**
135
+ * Subscribe to provider changes
136
+ *
137
+ * @param callback - Callback when flags change
138
+ * @returns Unsubscribe function
139
+ */
140
+ subscribe(callback: () => void): () => void;
141
+ /**
142
+ * Subscribe to feature flag events
143
+ *
144
+ * @param event - Event type to subscribe to
145
+ * @param handler - Event handler
146
+ * @returns Unsubscribe function
147
+ */
148
+ on(event: FeatureFlagDomainEventType, handler: (data: unknown) => void): () => void;
149
+ }
150
+ //# sourceMappingURL=FeatureFlagDomainService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureFlagDomainService.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/FeatureFlagDomainService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAQtD,OAAO,KAAK,EACV,8BAA8B,IAAI,+BAA+B,EACjE,0BAA0B,EAC3B,MAAM,uBAAuB,CAAC;AAM/B;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,SAAQ,iBAAiB,CAAC,+BAA+B,CAAC;IAC9F,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;gBAM3C,MAAM,EAAE,+BAA+B;IA4BnD;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,OAAO,IAAI,IAAI;IAYf;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B;;;;;;OAMG;IACG,QAAQ,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAgBzC;;;;;;OAMG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAM5E;;;;;;OAMG;IACG,QAAQ,CAAC,CAAC,GAAG,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAM3F;;;;;OAKG;IACG,WAAW,CACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IAiBzD;;;;;OAKG;IACG,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAgB3E;;;;;;OAMG;IACG,MAAM,CACV,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,GACvC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAgB/B;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxC;;;;;OAKG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;IAY/D;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;IAgBvD;;;;;OAKG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IASvD;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IASjC;;OAEG;IACH,cAAc,IAAI,IAAI;IAUtB;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAS3C;;;;;;OAMG;IACH,EAAE,CAAC,KAAK,EAAE,0BAA0B,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;CAGpF"}
@@ -5,7 +5,8 @@
5
5
  * Imports configuration from .env.local and provides validation.
6
6
  *
7
7
  */
8
- import { type FeatureFlagEnvironmentConfig } from '@plyaz/types';
8
+ import { type CoreFeatureFlagEnvironmentConfig } from '@plyaz/types/core';
9
+ import type { FeatureFlagConfigOptions as _FeatureFlagConfigOptions } from '@plyaz/types/features';
9
10
  /**
10
11
  * Feature flag configuration factory
11
12
  *
@@ -15,7 +16,7 @@ import { type FeatureFlagEnvironmentConfig } from '@plyaz/types';
15
16
  * @example
16
17
  * ```typescript
17
18
  * // Step 1: Called automatically by FeatureFlagService.onModuleInit()
18
- * const config = FeatureFlagConfigFactory.fromEnvironment();
19
+ * const config = FeatureFlagConfigFactory.fromOptions({ environment: Core.env.NODE_ENV });
19
20
  *
20
21
  * // Step 2: Configuration is validated
21
22
  * // Step 3: Provider is created with this config
@@ -48,64 +49,41 @@ export declare class FeatureFlagConfigFactory {
48
49
  * 7. → Database connection established
49
50
  *
50
51
  * @returns Validated configuration object ready for provider creation
51
- * @throws {FeatureFlagConfigError} If environment variables are missing or invalid
52
- *
53
- * @example
54
- * ```typescript
55
- * // This method reads from process.env and creates:
56
- * {
57
- * provider: 'database',
58
- * isCacheEnabled: true,
59
- * cacheTtl: 300,
60
- * databaseConfig: {
61
- * connectionString: 'https://your-project.supabase.co',
62
- * tableName: 'feature_flags',
63
- * poolSize: 10,
64
- * timeout: 30000
65
- * }
66
- * }
67
- * ```
52
+ * @throws {FeatureFlagConfigError} If required options are missing or invalid
68
53
  */
69
- static fromEnvironment(): FeatureFlagEnvironmentConfig;
70
54
  /**
71
- * Determines which provider to use - now uses constants instead of environment variables
55
+ * Creates configuration from explicit options
72
56
  *
73
- * @private
74
- * @returns Provider type from constants
75
- */
76
- private static getProvider;
77
- private static getCacheEnabled;
78
- private static getCacheTtl;
79
- private static getRefreshInterval;
80
- private static getLoggingEnabled;
81
- /**
82
- * Creates database configuration from environment variables
57
+ * All options have sensible defaults - only provide what you need to override.
58
+ * Environment is automatically read from Core.env.NODE_ENV.
83
59
  *
84
- * **CRITICAL**: This method requires SUPABASE_URL to be set in .env.local
60
+ * Note: For 'database' provider, DbService must be initialized first via Core.initialize().
61
+ * The database provider uses the already-configured DbService, no connection string needed here.
85
62
  *
86
- * @private
87
- * @returns Database configuration object
88
- * @throws {FeatureFlagConfigError} If SUPABASE_URL is missing
63
+ * @example Basic usage with defaults (memory provider)
64
+ * ```typescript
65
+ * const config = FeatureFlagConfigFactory.fromOptions();
66
+ * // Uses memory provider, cache enabled, default TTL
67
+ * ```
68
+ *
69
+ * @example Database provider (requires Core.initialize() first)
70
+ * ```typescript
71
+ * // First: Core.initialize() with db config
72
+ * await Core.initialize({ db: { adapter: 'sql', sql: { connectionString: '...' } } });
89
73
  *
90
- * @example Environment Variables Required:
91
- * ```bash
92
- * SUPABASE_URL=https://your-project.supabase.co # REQUIRED
93
- * SUPABASE_ANON_PUBLIC_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... # Used in connection
94
- * FEATURE_FLAG_TABLE_NAME=feature_flags # Optional, defaults to 'feature_flags'
95
- * DB_POOL_SIZE=10 # Optional, defaults to 10
96
- * DB_TIMEOUT=30000 # Optional, defaults to 30000ms
74
+ * // Then: Use database provider for feature flags
75
+ * const config = FeatureFlagConfigFactory.fromOptions({ provider: 'database' });
97
76
  * ```
98
77
  *
99
- * @example Generated Configuration:
78
+ * @example Custom cache settings
100
79
  * ```typescript
101
- * {
102
- * connectionString: 'https://your-project.supabase.co',
103
- * tableName: 'feature_flags',
104
- * poolSize: 10,
105
- * timeout: 30000
106
- * }
80
+ * const config = FeatureFlagConfigFactory.fromOptions({
81
+ * cacheEnabled: true,
82
+ * cacheTtl: 600, // 10 minutes
83
+ * refreshInterval: 30,
84
+ * });
107
85
  * ```
108
86
  */
109
- private static getDatabaseConfig;
87
+ static fromOptions(options?: _FeatureFlagConfigOptions): CoreFeatureFlagEnvironmentConfig;
110
88
  }
111
89
  //# sourceMappingURL=feature-flag.config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flag.config.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/config/feature-flag.config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAKL,KAAK,4BAA4B,EAGlC,MAAM,cAAc,CAAC;AAItB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,wBAAwB;IACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,MAAM,CAAC,eAAe,IAAI,4BAA4B;IAmBtD;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,MAAM,CAAC,eAAe;IAI9B,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAIjC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAOhC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAgBjC"}
1
+ {"version":3,"file":"feature-flag.config.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/config/feature-flag.config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAIL,KAAK,gCAAgC,EACtC,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,wBAAwB,IAAI,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEnG;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,wBAAwB;IACnC;;;;;;;;;;;;;;;;OAgBG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IAEH,MAAM,CAAC,WAAW,CAAC,OAAO,GAAE,yBAA8B,GAAG,gCAAgC;CA+B9F"}
@@ -5,7 +5,7 @@
5
5
  * Provides error reporting and environment-specific validation.
6
6
  *
7
7
  */
8
- import { type FeatureFlagEnvironmentConfig, type FeatureFlagValidationResult } from '@plyaz/types';
8
+ import { type CoreFeatureFlagEnvironmentConfig, type CoreFeatureFlagValidationResult } from '@plyaz/types/core';
9
9
  /**
10
10
  * FeatureFlagConfigValidator - Comprehensive configuration validation for feature flags
11
11
  *
@@ -121,7 +121,7 @@ export declare class FeatureFlagConfigValidator {
121
121
  * // ]
122
122
  * ```
123
123
  */
124
- static validate(config: FeatureFlagEnvironmentConfig): FeatureFlagValidationResult;
124
+ static validate(config: CoreFeatureFlagEnvironmentConfig): CoreFeatureFlagValidationResult;
125
125
  private static validateProvider;
126
126
  private static validateCacheSettings;
127
127
  private static validateDatabaseConfig;
@@ -138,13 +138,13 @@ export declare class FeatureFlagConfigValidator {
138
138
  * to ensure the system doesn't start with invalid configuration.
139
139
  *
140
140
  * @param {FeatureFlagEnvironmentConfig} config - Configuration to validate
141
- * @throws {DatabaseError} When validation fails with detailed error messages
141
+ * @throws {DatabasePackageError} When validation fails with detailed error messages
142
142
  *
143
143
  * @example Startup Validation
144
144
  * ```typescript
145
145
  * // In FeatureFlagService.onModuleInit()
146
146
  * try {
147
- * const config = FeatureFlagConfigFactory.fromEnvironment();
147
+ * const config = FeatureFlagConfigFactory.fromOptions();
148
148
  * FeatureFlagConfigValidator.validateOrThrow(config);
149
149
  *
150
150
  * // Configuration is valid, proceed with initialization
@@ -158,7 +158,7 @@ export declare class FeatureFlagConfigValidator {
158
158
  *
159
159
  * @example Error Output
160
160
  * ```typescript
161
- * // When validation fails, throws DatabaseError with message:
161
+ * // When validation fails, throws DatabasePackageError with message:
162
162
  * // "Configuration validation failed:
163
163
  * // provider: Invalid provider: invalid_type. Must be one of: memory, file, redis, api, database
164
164
  * // cacheTtl: Cache TTL must be non-negative
@@ -176,6 +176,6 @@ export declare class FeatureFlagConfigValidator {
176
176
  * # databaseConfig.connectionString: Database connection string is required"
177
177
  * ```
178
178
  */
179
- static validateOrThrow(config: FeatureFlagEnvironmentConfig): void;
179
+ static validateOrThrow(config: CoreFeatureFlagEnvironmentConfig): void;
180
180
  }
181
181
  //# sourceMappingURL=validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/config/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAEL,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAGjC,MAAM,cAAc,CAAC;AAKtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,qBAAa,0BAA0B;IACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+DG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,4BAA4B,GAAG,2BAA2B;IAiClF,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAkBpC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAiBrC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAoBvC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAUhC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAa/B,OAAO,CAAC,MAAM,CAAC,eAAe;IAU9B,OAAO,CAAC,MAAM,CAAC,WAAW;IA+B1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI;CAYnE"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/backend/featureFlags/config/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACrC,MAAM,mBAAmB,CAAC;AAY3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,qBAAa,0BAA0B;IACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+DG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,gCAAgC,GAAG,+BAA+B;IAiC1F,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAkBpC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAiBrC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAoBvC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAUhC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAa/B,OAAO,CAAC,MAAM,CAAC,eAAe;IAU9B,OAAO,CAAC,MAAM,CAAC,WAAW;IAqC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,gCAAgC,GAAG,IAAI;CAYvE"}
@@ -2,12 +2,12 @@
2
2
  * Feature Flag Controller
3
3
  *
4
4
  * NestJS controller for feature flag management.
5
- * Provides REST API endpoints for feature flag operations.
5
+ * Uses the domain FeatureFlagService directly.
6
6
  *
7
7
  * @fileoverview NestJS controller for feature flags
8
8
  */
9
- import { type FeatureFlagValue, type FeatureFlagContext, type FeatureFlagEvaluation, type FeatureFlag, type FeatureFlagRule } from '@plyaz/types';
10
- import type { FeatureFlagService } from './feature-flag.service';
9
+ import type { FeatureFlagValue, FeatureFlagContext, FeatureFlagEvaluation, FeatureFlag, FeatureFlagRule, CreateFlagRequest } from '@plyaz/types';
10
+ import { FeatureFlagService } from '@domain/featureFlags';
11
11
  import type { FeatureFlagKey } from '@domain/types';
12
12
  /**
13
13
  * Request DTO for flag evaluation.
@@ -15,21 +15,11 @@ import type { FeatureFlagKey } from '@domain/types';
15
15
  interface EvaluateFlagRequest {
16
16
  context?: FeatureFlagContext;
17
17
  }
18
- /**
19
- * Request DTO for creating/updating flags.
20
- */
21
- interface CreateFlagRequest {
22
- name: string;
23
- description?: string;
24
- value: FeatureFlagValue;
25
- isEnabled?: boolean;
26
- environment?: 'all' | 'development' | 'staging' | 'production';
27
- rolloutPercentage?: number;
28
- }
29
18
  /**
30
19
  * Feature Flag Controller
31
20
  *
32
21
  * Provides REST endpoints for feature flag management and evaluation.
22
+ * Uses the domain FeatureFlagService directly.
33
23
  *
34
24
  * @example
35
25
  * ```typescript
@@ -40,87 +30,49 @@ interface CreateFlagRequest {
40
30
  */
41
31
  export declare class FeatureFlagController {
42
32
  private readonly featureFlagService;
43
- constructor(featureFlagService: FeatureFlagService);
33
+ constructor(featureFlagService: FeatureFlagService<FeatureFlagKey>);
44
34
  /**
45
35
  * Evaluates a feature flag for the given context.
46
- *
47
- * @param key - Feature flag key
48
- * @param body - Evaluation context
49
- * @returns Feature flag evaluation result
50
36
  */
51
37
  evaluateFlag(key: FeatureFlagKey, body?: EvaluateFlagRequest): Promise<FeatureFlagEvaluation<FeatureFlagKey>>;
52
38
  /**
53
39
  * Checks if a feature flag is enabled.
54
- *
55
- * @param key - Feature flag key
56
- * @param body - Evaluation context
57
- * @returns Boolean indicating if flag is enabled
58
40
  */
59
41
  isEnabled(key: FeatureFlagKey, body?: EvaluateFlagRequest): Promise<{
60
42
  isEnabled: boolean;
61
43
  }>;
62
44
  /**
63
45
  * Gets all feature flags with their evaluations.
64
- *
65
- * @param body - Evaluation context
66
- * @returns All feature flag evaluations
67
46
  */
68
47
  evaluateAllFlags(body?: EvaluateFlagRequest): Promise<Record<string, FeatureFlagEvaluation<FeatureFlagKey>>>;
69
48
  /**
70
49
  * Creates a new feature flag.
71
- *
72
- * @param key - Feature flag key
73
- * @param createData - Flag creation data
74
- * @returns Created feature flag
75
50
  */
76
- createFlag(createData: CreateFlagRequest & {
77
- key: FeatureFlagKey;
78
- }): Promise<FeatureFlag<FeatureFlagKey>>;
51
+ createFlag(createData: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>>;
79
52
  /**
80
53
  * Updates an existing feature flag.
81
- *
82
- * @param key - Feature flag key
83
- * @param updateData - Flag update data
84
- * @returns Updated feature flag
85
54
  */
86
- updateFlag(key: FeatureFlagKey, updateData: Partial<CreateFlagRequest>): Promise<FeatureFlag<FeatureFlagKey>>;
55
+ updateFlag(key: FeatureFlagKey, updateData: Partial<CreateFlagRequest<FeatureFlagKey>>): Promise<FeatureFlag<FeatureFlagKey>>;
87
56
  /**
88
57
  * Deletes a feature flag.
89
- *
90
- * @param key - Feature flag key
91
58
  */
92
59
  deleteFlag(key: FeatureFlagKey): Promise<{
93
60
  isSuccessful: boolean;
94
61
  }>;
95
62
  /**
96
63
  * Sets a manual override for a flag.
97
- *
98
- * @param key - Feature flag key
99
- * @param value - Override value
100
64
  */
101
65
  setOverride(key: FeatureFlagKey, value: FeatureFlagValue): Promise<{
102
66
  isSuccessful: boolean;
103
67
  }>;
104
68
  /**
105
69
  * Removes a manual override for a flag.
106
- *
107
- * @param key - Feature flag key
108
70
  */
109
71
  removeOverride(key: FeatureFlagKey): Promise<{
110
72
  isSuccessful: boolean;
111
73
  }>;
112
- /**
113
- * Gets all available feature flags.
114
- *
115
- * @param environment - Filter by environment
116
- * @returns List of feature flags
117
- */
118
- getAllFeatureFlags(environment?: string): Promise<FeatureFlag<FeatureFlagKey>[]>;
119
74
  /**
120
75
  * Gets all rules for a specific flag.
121
- *
122
- * @param key - Feature flag key
123
- * @returns List of rules for the flag
124
76
  */
125
77
  getFlagRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;
126
78
  /**
@@ -129,6 +81,13 @@ export declare class FeatureFlagController {
129
81
  refreshCache(): Promise<{
130
82
  isSuccessful: boolean;
131
83
  }>;
84
+ /**
85
+ * Gets service health status.
86
+ */
87
+ getHealth(): Promise<{
88
+ isInitialized: boolean;
89
+ provider: string;
90
+ }>;
132
91
  }
133
92
  export {};
134
93
  //# sourceMappingURL=feature-flag.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flag.controller.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/feature-flag.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,eAAe,EAGrB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD;;GAEG;AACH,UAAU,mBAAmB;IAC3B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,gBAAgB,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,GAAG,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;IAC/D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;GAWG;AACH,qBACa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,kBAAkB;IAEnE;;;;;;OAMG;IAEG,YAAY,CACF,GAAG,EAAE,cAAc,EACzB,IAAI,GAAE,mBAAwB,GACrC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAYjD;;;;;;OAMG;IAEG,SAAS,CACC,GAAG,EAAE,cAAc,EACzB,IAAI,GAAE,mBAAwB,GACrC,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAalC;;;;;OAKG;IAEG,gBAAgB,CACZ,IAAI,GAAE,mBAAwB,GACrC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;IAYjE;;;;;;OAMG;IAEG,UAAU,CACN,UAAU,EAAE,iBAAiB,GAAG;QAAE,GAAG,EAAE,cAAc,CAAA;KAAE,GAC9D,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAYvC;;;;;;OAMG;IAEG,UAAU,CACA,GAAG,EAAE,cAAc,EACzB,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAC7C,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAYvC;;;;OAIG;IAEG,UAAU,CAAe,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAavF;;;;;OAKG;IAEG,WAAW,CACD,GAAG,EAAE,cAAc,EAClB,KAAK,EAAE,gBAAgB,GACrC,OAAO,CAAC;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAarC;;;;OAIG;IAEG,cAAc,CAAe,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAa3F;;;;;OAKG;IAEG,kBAAkB,CACA,WAAW,CAAC,EAAE,MAAM,GACzC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;IAYzC;;;;;OAKG;IAEG,YAAY,CACF,GAAG,EAAE,cAAc,GAChC,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAY7C;;OAEG;IAEG,YAAY,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;CAYzD"}
1
+ {"version":3,"file":"feature-flag.controller.d.ts","sourceRoot":"","sources":["../../../src/backend/featureFlags/feature-flag.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAwB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;GAEG;AACH,UAAU,mBAAmB;IAC3B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,qBACa,qBAAqB;IAG9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,kBAAkB,CAAC,cAAc,CAAC;IAGzE;;OAEG;IAEG,YAAY,CACF,GAAG,EAAE,cAAc,EACzB,IAAI,GAAE,mBAAwB,GACrC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAYjD;;OAEG;IAEG,SAAS,CACC,GAAG,EAAE,cAAc,EACzB,IAAI,GAAE,mBAAwB,GACrC,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAalC;;OAEG;IAEG,gBAAgB,CACZ,IAAI,GAAE,mBAAwB,GACrC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;IAYjE;;OAEG;IAEG,UAAU,CACN,UAAU,EAAE,iBAAiB,CAAC,cAAc,CAAC,GACpD,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAYvC;;OAEG;IAEG,UAAU,CACA,GAAG,EAAE,cAAc,EACzB,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAC7D,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAYvC;;OAEG;IAEG,UAAU,CAAe,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAavF;;OAEG;IAEG,WAAW,CACD,GAAG,EAAE,cAAc,EAClB,KAAK,EAAE,gBAAgB,GACrC,OAAO,CAAC;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAarC;;OAEG;IAEG,cAAc,CAAe,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAa3F;;OAEG;IAEG,YAAY,CACF,GAAG,EAAE,cAAc,GAChC,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAY7C;;OAEG;IAEG,YAAY,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAaxD;;OAEG;IAEG,SAAS,IAAI,OAAO,CAAC;QACzB,aAAa,EAAE,OAAO,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CAMH"}